直击中间件核心:手写 MQ 的底层逻辑与实战价值

市面上的消息队列课程多停留在“怎么调接口”的 CRUD 层面,而本套内容专注于从 0 到 1 手写分布式消息中间件。它不教你复制粘贴开源代码,而是带你深入 RabbitMQ、RocketMQ 和 Kafka 的架构本质,亲手复现 CommitLog 存储、消费者组分配、集群注册中心以及内存映射(mmap)等核心模块。这不仅是学一门技术,更是为了彻底打通你对高并发系统解耦、削峰填谷及最终一致性设计的底层认知。

适合有 Java 基础的中高级开发者,建议按架构模块顺序学习

本内容严格适用于具备 Java 基础且对 JVM、Linux 操作系统原理有一定了解的开发者。若对文件 IO、内存模型或网络编程感到陌生,直接上手手写代码会非常吃力。建议先快速浏览导学部分,明确课程脉络;接着重点攻克“常用消息队列原理”章节,搞懂三大主流 MQ 的区别与适用场景,这是后续手写设计的基石。若连基础架构原理都不理解,盲目进入手写实战阶段极易在遇到分布式事务或高可用设计时卡壳。

学完能独立搭建中间件,配合源码对照实现企业级定制

课程通过拆解开源框架源码,引导你独立完成一个具备高可用特性的轻量级消息中间件。学完之后,你不仅能独立实现 CommitLog 的 mmap 零拷贝读写、Broker 集群的注册同步以及延迟消息、事务消息等复杂功能,还能结合提供的源码仓库进行对照修改,快速适配不同业务场景。资料包中的实战代码与原理讲解紧密咬合,建议在学习“数据存储核心”和“复杂功能思考”时,先在本地搭建简易集群,通过修改配置文件或注入代码来验证 mmap 效果与消息流转机制,从而将理论内化为实际动手能力,而非仅仅停留在“听懂了”的层面。

课程目录

第1章 课程导学介绍/
[ 13M] 1-1手写消息中间件--课程导学
[ 12M] 1-2课程详细内容安排
第2章 深入常用消息队列原理/
[ 51M] 2-1RabbitMq架构原理深入剖析
[ 53M] 2-2RocketMq架构原理深入剖析
[ 46M] 2-3Kafka架构原理深入剖析
[ 18M] 2-4三种消息队列对比剖析
第3章 消息中间件架构设计篇/
[4.3M] 3-1本章介绍
[ 22M] 3-2CommitLog介绍-MQ的消息都存在哪儿?
[ 29M] 3-3ConsumerQueue介绍-面对多消费者,消息的分配要如何设计
[ 18M] 3-4消息集群架构思考(一)为什么消息队列还需用到注册中心?
[ 37M] 3-5消息集群架构思考(二)多节点存储的架构要如何实现?
[ 39M] 3-6复杂消息功能思考(一)消息重试机制如何实现?
[ 31M] 3-7复杂消息功能思考(二)延迟消息要怎么做?
[ 35M] 3-8复杂消息功能思考(三)事务消息是怎么一回事?
[ 16M] 3-9复杂消息功能思考(四)内存映射自扩容设计思路
[7.1M] 3-10本章回顾
第4章 【手写篇 - 第一步】 数据存储核心 - commitLog设计与实战/
[3.9M] 4-1本章介绍
[5.2M] 4-2代码仓库介绍
[7.1M] 4-3消息原始数据存储结构讲解
[ 36M] 4-4操作系统原理之-传统文件IO读写介绍
[ 42M] 4-5基于mmap的读写工具封装(一)基础功能的实现
[ 28M] 4-6基于mmap的读写工具封装(二)mmap的内存释放讲解
[ 33M] 4-7基于mmap的读写工具封装(三)mmap工具的效果验证
[ 38M] 4-8如何实现mq消息的顺序写入
[ 41M] 4-9mq消息存储配置的管理
[ 40M] 4-10mq基础配置的封装
[ 40M] 4-11Broker的启动类设计
[ 27M] 4-12commitLog写入逻辑细节分析
[ 67M] 4-13如何获取最新写入的commitLog文件
[ 15M] 4-14消息内容结构体设计
[ 35M] 4-15消息结构体封装的实践
[ 40M] 4-16commitlog文件剩余空间检测机制
[ 53M] 4-17消息投递offset更新机制的实现
[ 22M] 4-18消息写入的配置属性同步更新
[ 46M] 4-19多线程场景下mmap的读写如何优化
[ 17M] 4-20commitlog追加写入数据测试
第5章 【手写篇 - 第二步】消息分派的核心 - ConsumeQueue分析与实战/
[3.6M] 5-1本章介绍
[ 26M] 5-2针对ConsumerQueue的dispatcher操作
[ 33M] 5-3consumequeue的文件存储结构设计
[ 20M] 5-4【实战】ConsumeQueue存储结构实现(一)ConsumerQueue的offset数据结构设计
[ 25M] 5-5【实战】ConsumeQueue存储结构实现(二)offset映射模型的实现
[ 18M] 5-6【实战】ConsumeQueue存储结构实现(三)ConsumeQueue的offset定时刷盘机制
[ 62M] 5-7【实战】ConsumeQueue存储预热链路逻辑搭建
[ 44M] 5-8【实战】ConsumeQueue文件的预热实现
[ 24M] 5-9consumequeue文件的映射写入和offset更新
[ 11M] 5-10consumeQueue处理器的基础接口定义
[ 24M] 5-11consumeQueue的offset定位获取
[ 41M] 5-12consumequeue的数据读取实现
[ 47M] 5-13consumequeue的offset更新实现
[ 20M] 5-14多消费者消费效果验证
第6章 【手写篇 - 第三步】注册中心 - nameserver设计与实战/
[ 19M] 6-1本章介绍
[ 46M] 6-2注册中心的设计与实现-基础骨架的搭建
[ 44M] 6-3注册中心的设计与实现(一)事件总线的发布能力实现
[ 35M] 6-4注册中心的设计与实现(二)基于spi机制实现处理器实现
[ 64M] 6-5注册中心的设计与实现(三)事件监听的逻辑完善
[ 39M] 6-6注册中心的设计与实现(四)非法节点的剔除逻辑完善
[ 33M] 6-7注册中心的设计与实现(五)broker与nameserver的网络通信建立
[ 68M] 6-8注册中心的设计与实现(六)broker远程通信sdk的封装实现
[ 42M] 6-9broker和nameserver的访问测试
[ 17M] 6-10nameserver集群架构的设计思路剖析
[ 48M] 6-11-1nameserver主从复制-主节点同步进程开启
[ 51M] 6-12-2nameserver主从复制-主节点同步进程开启
[ 52M] 6-13nameserver主从复制-主节点同步线程
[ 56M] 6-14nameserver主从复制-从节点连接主节点
[ 25M] 6-15nameserver主从复制-从节点接收主节点数据同步过程
[ 37M] 6-16nameserver主从复制-同步效果验证
[ 62M] 6-17nameserver主从复制-同步复制,异步复制,半同步复制的三种模式实现(一)
[ 32M] 6-18nameserver主从复制-同步复制,异步复制,半同步复制的三种模式实现(二)
[9.5M] 6-19链式复制架构的介绍
[ 44M] 6-20链式复制的初始化实现mov
[ 53M] 6-21链式复制的同步实现-全链路同步的实现
[ 49M] 6-22链式复制的实现-全链路ack反馈的实现
[ 12M] 6-23链式复制的实现-数据同步效果验证
[5.5M] 6-24本章回顾
第7章 【手写篇 - 第四步】客户端SDK设计与实战/
[3.9M] 7-1本章介绍
[ 11M] 7-2如何设计一款消息队列的客户端SDK
[ 87M] 7-3Netty异步转同步的功能封装
[ 48M] 7-4Producer角色如何与NameServer建立网络连接
[ 76M] 7-5拉取broker地址功能实现
[ 44M] 7-6客户端拉取出broker地址功能实现
@优库it资源网ukoou.com
[ 50M] 7-7Producer端消息发送基础接口定义
[ 56M] 7-8Producer发送数据到Broker端持久化实现
[ 28M] 7-9Consumer基础接口的开发
[ 12M] 7-10消息重平衡过程的梳理
[ 63M] 7-11重平衡问题讲解
[ 19M] 7-12Kakfa,RocketMQ中的重平衡策略了解
[ 19M] 7-13消息消费需要考虑哪些问题
[ 33M] 7-14消费者消息拉取监听器实现
[ 61M] 7-15消息拉去请求链路完善
[ 17M] 7-16消费端拉消息场景测试
[ 70M] 7-17消费端拉数据后回应ack
[ 28M] 7-18全链路mq推送与消费验证
[2.7M] 7-19本章回顾
第8章 【手写篇 -第五步】broker高可用架构拓展实战/
[3.9M] 8-1本章介绍
[ 15M] 8-2Broker的主从复制思路整理
[ 70M] 8-3topic的动态创建实现
[ 21M] 8-4动态创建topic效果验证
[ 65M] 8-5Broker集群模式下的实例注册逻辑实现
[ 28M] 8-6面对Broker集群,客户端拉取ip的实现
[6.5M] 8-7Broker集群的复制逻辑剖析
[ 81M] 8-8Broker的主从链接通道初始化建立实现
[ 24M] 8-9Broker主从节点多目录文件拆解
[ 31M] 8-10Broker主从异步复制的实现
[ 36M] 8-11Broker主从同步复制实现与验证
[ 48M] 8-12Broker主从切换过程中会遇到的问题
[ 38M] 8-13Broker主节点宕机监听处理
[ 27M] 8-14Broker主从切换效果实现
[4.4M] 8-15本章总结
第9章 【手写篇 - 第六步】复杂消息处理(一) - 消息重试功能的设计与实现/
[2.6M] 9-1本章介绍
[ 42M] 9-2消息重试设计思路实现
[ 44M] 9-3消息重试Netty请求链路打通
[ 16M] 9-4Consumer消息重试链路在时间轮中的运作细节梳理
[ 20M] 9-5重试消息的存储效果验证
[ 51M] 9-6时间轮组件的实现(一)
[ 37M] 9-7时间轮组件的实现(二)
[7.2M] 9-8时间轮组件的效果验证
[ 24M] 9-9多极时间轮的切换验证
[ 28M] 9-10时间轮事件事件回调通知
[ 33M] 9-11重试监听器回调
[ 26M] 9-12重试主题的自动创建
[ 30M] 9-13消息重试队列推送和消费的实现
[2.6M] 9-14本章回顾
第10章 【手写篇 - 第七步】复杂消息处理(二) - 延迟消息功能的设计与实现/
[2.2M] 10-1本章介绍
[ 15M] 10-2延迟消息设计以及使用场景介绍
[ 34M] 10-3延迟消息的效果实现
[ 33M] 10-4延迟消息的持久化实现
[ 50M] 10-5延迟消息的数据恢复如何实现
[1.6M] 10-6本章介绍
第11章 【手写篇 - 第八步】复杂消息处理(三) -事务消息功能的设计与实现/
[2.5M] 11-1本章介绍
[4.3M] 11-2事务消息设计思路回顾
[ 44M] 11-3事务消息的half消息提交
[ 59M] 11-4本地事务回调接口的实现
[ 59M] 11-5事务消息回调处理
[ 18M] 11-6事务消息的效果验证
[1.8M] 11-7本章回顾
第12章 【手写篇 - 第九步】可视化管理控制台设计与实战/
[1.6M] 12-1本章介绍
[5.0M] 12-2基础控制台的接口开发
[ 25M] 12-3Broker数据的上报实现
[ 34M] 12-4控制台的基础开发思路梳理
[4.1M] 12-5控制台效果演示
[1.6M] 12-6本章介绍
第13章 【手写篇 - 第十步】基于消息队列综合实战/
[2.4M] 13-1本章介绍
[ 22M] 13-2MQ多泳道环境的实现
[ 18M] 13-3Kafka和实时计算
[3.6M] 13-4本章回顾
第14章 课程回顾与常见面试题剖析/
[5.8M] 14-1本章介绍
[ 10M] 14-2课程回顾
资料代码/
一、MQ是什么 MQ全称为Message Queue,即消息队列 ,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生 产、存储、消费全过程的软件系统,遵循FIFO原