- 博客(20)
- 收藏
- 关注
原创 mysql 实现分库分表之 --- 基于 MyCAT 的分片策略详解
在我们日常工作的项目中,特别是面向 C 端用户的产品,随着业务量的逐步扩大,数据量也呈指数级增长。为了应对日益增长的数据库压力,数据库优化已成为项目中不可或缺的一环,而分库分表则是海量数据优化方案中的重要手段。在面试中,有关分库分表的知识点也经常被提及,可见其在实际业务中的关键地位。今天,我将详细介绍为什么我们需要进行分库分表,以及常见的分库分表方案。同时,我将使用其中一种方案——MyCAT,来演示分库分表的实际操作,帮助大家更好地理解和掌握这一技术。随着互联网的快速发展和用户数量的激增,现代应用程序的数据
2024-11-12 17:32:17
944
原创 从单层到 MVC,再到 DDD:架构演进的思考与实践
分布式架构和微服务架构通过将系统拆分为独立的模块或服务,实现了更高的扩展性、容错性和灵活性,解决了集群架构在数据一致性、功能耦合等方面的局限性。这种解耦设计不仅提升了系统的三高能力(高并发、高可用、高性能),还增强了系统的敏捷性,能够更好地适应现代互联网应用的复杂需求。接下来,我们将进一步探讨在分布式与微服务架构的基础上,如何从传统的 MVC 架构向领域驱动设计(DDD)架构演进,以更好地应对复杂业务场景。
2024-11-08 12:18:34
1675
原创 如何选择最适合的消息队列?详解 Kafka、RocketMQ、RabbitMQ 的使用场景
消息队列是一个用于在分布式系统中传递消息的机制。它通过生产、存储和消费消息的方式,在不同系统或服务之间建立通信桥梁,帮助实现解耦和异步处理。生产者(Producer)生产者是消息的创建者。它负责将消息发送到消息队列中。生产者可以是系统中的某个模块、服务,或者用户操作触发的事件。无论消息的来源是什么,生产者的作用就是生成需要传递的信息。在业务系统中,生产者通常是业务事件的触发方,例如用户下单时生成订单信息,并将该信息发送到消息队列中,以便其他系统能够接收和处理该信息。存储处理中心。
2024-11-04 12:00:46
1544
原创 在工作中常用到的 Linux 命令总结
上面总结的不能涵盖我们日常开发工作中全部能用到的命令 不过我们这边多用熟能生巧 掌握一些自己日常工作中经常用的几个就足够了。
2024-11-01 18:38:57
1018
1
原创 高并发场景下的抢红包系统设计:实时拆分与预先生成方案的比较与优化
面试中经常会问到的一个经典场景问题是如何设计一个高并发抢红包系统。我之前的项目场景中也会涉及到群红包的业务逻辑。今天我们来一起讨论下这个业务场景设计
2024-11-01 13:53:51
1447
原创 Git 常用命令与开发流程总结
克隆特定分支(如develop通过git clone命令,开发者可以轻松将项目从远程仓库复制到本地,快速上手开发。创建和管理分支一般来说,当我们封装好了master主分支代码,或者从公司仓库克隆了代码后,就需要进入实际开发阶段。在日常开发中,我们通常会基于主分支创建新的分支,这样可以在不影响主分支的情况下,独立完成功能或修复工作,之后再将更改合并到主分支中。这一部分我们将介绍常用的分支管理命令。
2024-10-29 19:59:29
1109
原创 Elasticsearch入门:增删改查详解与实用场景
Elasticsearch,简称ES,是一个分布式、RESTful搜索和分析引擎,基于Apache Lucene构建。它能够以高效、灵活的方式存储、检索和分析大量数据,因此在全文搜索、实时数据分析和日志监控等场景中得到了广泛应用。在Elasticsearch中,增、删、改、查操作提供了对海量数据的高效管理能力,使其在处理复杂数据结构和实时查询场景中具有明显优势。新增操作:允许将文档数据快速存储到索引中,并支持指定或自动生成文档ID,确保数据的灵活存储和检索。查询操作。
2024-10-17 15:41:26
2699
原创 redis分布式锁的实现问题与解决方案详解
分布式锁是一种在分布式系统中用于控制多个节点对共享资源的并发访问的机制。它可以确保在分布式环境下,多个服务实例或进程在访问关键资源时不会发生竞争。分布式锁的目标是保证每次只有一个节点可以持有锁,并在操作完成后及时释放锁,以便其他节点可以继续操作资源。在分布式环境下,传统的单机锁(如Java中的或Lock)不再适用,因为这些锁无法在多个进程或服务器之间共享。因此,分布式锁的机制通常基于共享的存储系统(如Redis、Zookeeper等)来实现。
2024-10-17 11:44:32
1496
1
原创 php常用设计模式之观察者模式
观察者模式是一种行为型设计模式,允许我们定义一个事件触发机制,在事件源和响应操作之间建立解耦的通知关系。当某个事件发生时(例如支付成功),事件源会通知所有订阅的观察者,触发相应的处理逻辑。通过观察者模式,可以在运行时动态添加或移除观察者,使得系统具备高度的可扩展性和灵活性。通过观察者模式的优化设计,我们成功将支付成功后的多种操作分离为独立的观察者类,使得业务逻辑更加清晰、灵活。这样不仅降低了代码的耦合度,还实现了支付流程的扩展性,使得后续新增需求时无需修改主流程代码。
2024-10-16 19:03:29
984
原创 Redis 性能优化选择:Pika 的配置与使用详解
Pika 是一种兼容 Redis 协议的高效存储引擎,设计初衷就是为了解决 Redis 在大数据场景下因内存限制而带来的瓶颈问题。与 Redis 将数据存储在内存中的方式不同,Pika 将数据存储在磁盘上,从而有效扩展存储容量,适应大规模数据的需求。当 Redis 的内存使用量超过 16 GiB 时,会面临多种限制,如内存容量受限、单线程阻塞、启动恢复时间长、内存硬件成本高、缓冲区容易填满、一主多从故障时的切换成本高等。Pika 的出现并非为了替代 Redis,而是为了补充 Redis。
2024-10-16 11:42:31
1554
1
原创 php常用设计模式之策略模式
首先,定义一个接口,规定所有支付方式的基本方法payphp策略模式通过将不同的算法或行为封装在独立的策略类中,使系统能够根据需要动态选择和切换策略。增强扩展性:增加新的策略时,只需创建新的策略类,不需要修改现有代码,符合开闭原则。减少条件判断:将不同算法或行为从客户端代码中分离,避免了大量的if-else或语句,使代码更简洁和易读。提高灵活性:策略模式让系统能够在运行时灵活选择和替换行为,满足多变的业务需求。当工厂模式与策略模式结合使用进一步解耦对象创建与行为执行。
2024-10-15 11:12:50
1076
原创 php常用设计模式之工厂模式
工厂模式类型特点适用场景缺点简单工厂模式单一工厂类,通过静态方法创建对象产品种类少、扩展性需求低不符合开闭原则,扩展性差工厂方法模式每个产品对应一个工厂类,符合开闭原则产品种类多,需支持系统扩展性增加系统复杂度,工厂类较多抽象工厂模式可以创建多个相关对象(产品族),满足复杂对象创建需求需要创建一组相关对象组合(产品族)扩展复杂,类结构较复杂通过这种对比表格和示例代码,读者可以更清晰地了解不同工厂模式的特点与适用场景,并能根据项目需求选择合适的工厂模式类型。
2024-10-15 11:10:24
1327
原创 php常用设计模式之单例模式
如果实例的初始化开销大,且不一定每次都使用,选择懒汉式,延迟加载可以节省资源。如果应用对响应速度有要求,且希望在系统启动时就获得实例,则选择饿汉式,它提供了线程安全的同时,也减少了同步处理的开销。接下来,我将通过单例模式分别实现 MySQL、Redis、MongoDB 和 Elasticsearch 的连接管理,展示如何在这些场景中应用单例模式。通过单例模式,我们能够高效地管理 MySQL、Redis、MongoDB 和 Elasticsearch 等资源的连接,实现了资源的合理分配与复用。
2024-10-14 13:22:54
2301
2
原创 PHP 开发者为什么要先学 Swoole 再学 Go?
虽然Swoole 也有一些在 Go 语言面前的不足。比如,Swoole 依然是一个扩展层,需要依赖 PHP 环境,而 Go 是原生编译语言,性能和部署效率更高。另外,Swoole 的异步操作和内存管理复杂度在大规模并发下可能比 Go 的 goroutine 略显劣势。但是值得一提的是,Swoole v6版本在这些方面做了不少改进,进一步提升了协程调度和内存管理的效率,同时增加了对更多底层协议的支持。
2024-10-14 11:03:56
931
原创 mysql数据同步ES方案---DTS
通过上面的步骤,我们成功地使用阿里云的数据传输服务(DTS)将 MySQL 数据同步到了 Elasticsearch,实现了全量和增量数据的同步。DTS 自动创建了与 MySQL 表结构一致的 Elasticsearch 索引,大大简化了配置过程,同时确保了数据的实时性和一致性。在实际操作中,DTS 提供了便捷的任务管理和监控功能,使我们能够随时查看同步进度并快速验证数据同步效果。总之,DTS 是一种高效、自动化的同步工具,特别适用于需要 MySQL 和 Elasticsearch 实时联动的应用场景。
2024-10-12 13:13:18
2514
原创 mysql数据同步ES方案---Canal
Canal 是由阿里巴巴开源的一款数据捕获工具,专为解决 MySQL 数据实时同步问题设计。它通过模拟 MySQL 从库的方式来监听和解析 binlog 日志,从而获取 MySQL 的数据变更,支持将这些变更同步到其他数据存储系统,比如 Redis、Elasticsearch、Kafka 等,满足多种数据同步需求。
2024-10-11 20:36:18
1515
1
原创 mysql之主从复制原理及实践
在现代数据库管理中,数据的高可用性和负载均衡是至关重要的。MySQL 的主从复制功能提供了一种有效的解决方案,可以通过将数据从一个主服务器复制到一个或多个从服务器,来实现数据的备份、读取负载分担和高可用性。的值替换为实际的主实例 IP 地址、端口号、同步用户及其密码,以及在主实例中通过。在 MySQL 控制台中,创建一个用于数据同步的专用用户,确保该用户具备。登录 MySQL 后,使用以下命令配置从实例连接到主实例。用户即可用于从实例的数据同步连接,接下来可以继续配置从实例。
2024-10-11 20:22:08
2152
原创 redis高级数据类型之Bitmap
Redis 的 Bitmap 数据类型实际上是基于字符串实现的,它允许用户以位(bit)为单位存储和操作数据。Bitmap 数据类型在 Redis 2.8 版本中被引入,旨在处理需要高效状态跟踪和统计的场景。Bitmap 是一种紧凑的数据结构,可以在有限的内存中表示大量的状态信息,尤其适用于高并发的应用程序。通过对 Redis 的 Bitmap 和 Bloom 过滤器的探讨,我们深入了解了如何在社交应用中有效管理用户状态和确保昵称的唯一性。
2024-10-11 20:13:13
879
原创 redis高级数据类型之Geospatial
Redis 的 Geospatial 数据类型专门用于存储和处理与地理位置相关的数据。它允许开发者利用经纬度坐标来表示地理位置,并提供多种命令来进行高效的地理空间计算和查询。
2024-10-11 20:09:38
639
原创 redis高级数据类型之HyperLogLog
HyperLogLog 是 Redis 2.8 版本中新增的数据类型,专门用于统计基数(cardinality)的数据集合。它是一种基于概率算法的数据结构,能够高效地估算集合中不重复元素的数量。HyperLogLog 作为一种高效的概率性数据结构,在处理大规模数据集时展现了其卓越的性能和低内存占用。它能够快速估算集合中的独特元素数量,适用于社交应用、网络监控、广告统计等多个场景。虽然其统计结果存在一定的误差,但在大多数情况下,这种误差是可以接受的,尤其是在需要高频次计数和实时反馈的应用中。
2024-10-11 20:03:45
982
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人