很多人对消息队列的认知停留在「会用」层面:知道怎么发消息、怎么消费、怎么配 Broker,但一旦线上出现消息堆积、重复消费、顺序错乱,排查起来就只能靠猜。这门课的目标很明确——让你不再只当中间件的使用者,而是通过亲手写一个分布式消息队列,把存储、分派、消费这些环节的底层逻辑摸清楚。

先判断值不值得学

它不是 MQ 使用入门课。如果你现在连 Kafka 或 RocketMQ 的基本概念都不熟,直接上手会吃力,因为课程默认你至少用过一种消息队列,能理解 Topic、Partition、Offset、Consumer Group 这些词在业务里的实际含义。

它也不是纯源码解读课。市面上不少课程是打开 Kafka 源码逐行讲,听完似懂非懂。这门选择让你自己动手实现一遍,遇到的问题和真实中间件面对的问题高度重合:数据怎么落盘、文件怎么读写、offset 怎么维护、消息怎么投递。

适合两类人:一是工作里已经和 MQ 打交道、想往底层走的后端开发;二是准备中间件方向面试、需要能讲清楚「消息为什么不会丢」的求职者。如果你只想快速学会某个 MQ 的 API,这门课投入产出比不高。

它解决的是哪个工作场景

典型场景有三个。第一,线上消息突然堆积,你能从存储结构和投递机制判断是写入瓶颈还是消费端问题,而不是只会重启。第二,设计业务时需要在可靠性、顺序性、吞吐之间做取舍,你清楚每种选择背后的代价。第三,团队要自研轻量级消息组件或做二次开发,你有从零搭建的完整经验。

课程围绕存储核心展开,其中很大篇幅讲 commitLog 的设计与实现。这是消息队列最底层也最关键的部分:消息以什么结构写入、用传统文件 IO 怎么读写、如何兼顾顺序写和随机读。这些内容在调优和故障排查时直接对应到具体现象。

学完能独立做什么

  • 独立设计并实现一个可运行的消息队列核心模块,包括消息的写入、存储与读取流程。
  • 理解消息投递 offset 的更新机制,能说清楚消费位点是怎么维护、为什么会出现重复消费。
  • 对操作系统层面的文件 IO 有实际动手体会,能解释顺序写为何比随机写快。
  • 在面试或技术评审中,把消息存储、分派、处理三段链路讲成一条完整的因果链,而不是背概念。

资料怎么用

建议按「先跑通、再抠细节」的顺序推进。第一遍跟着实现,不要纠结每一行,先把整体链路跑起来,建立全局感。第二遍回到存储结构、IO 读写、offset 更新这几个关键点,对照自己写的代码思考:如果消息量放大十倍,这里会先出问题吗?

手写部分不要只看不写。中间件的复杂度很大程度藏在细节里,看懂和写出来之间隔着一堆边界情况。每完成一个模块,拿它和你熟悉的 MQ 对比,找出设计差异,这比单纯跟做更有价值。

整体来看,这门课信息密度偏高,需要一定后端基础和耐心。它不承诺速成,但如果你确实想跨过「会用」这道门槛,它提供的动手路径是扎实的。选之前先确认自己属于目标人群,再决定投入。

课程目录

📁 第4章 【手写篇 - 第一步】 数据存储核心 - commitLog设计与实战 4-3 消息原始数据存储结构讲解【更多精选‖公众号:CunWorknotes】 .mp4
 [5.4 MB] 4-4 操作系统原理之 - 传统文件IO读写介绍【不易整理‖请关注:CunWorkNoteS】.mp4
 [23.4 MB] 4-17 消息投递offset更新机制的实现.mp4
 [51.2 MB] 4-14 消息内容结构体设计【资源精选‖更多关注:CunworkNotes】.mp4
 [14.7 MB] 4-8 如何实现mq消息的顺序写入【更多精选‖公众号:CunWorknotes】 .mp4
 [28.9 MB] 4-7 基于mmap的读写工具封装(三)mmap工具的效果验证.mp4
 [24.1 MB] 4-6 基于mmap的读写工具封装(二)mmap的内存释放讲解.mp4
 [26.1 MB] 4-11 Broker的启动类设计.mp4
 [43.1 MB] 4-

18 消息写入的配置属性同步更新 (1).mp4
 [33.3 MB] 4-13 如何获取最新写入的commitLog文件.mp4
 [68.0 MB] 4-16 commitlog文件剩余空间检测机制.mp4
 [48.1 MB] 4-9 mq消息存储配置的管理.mp4
 [34.4 MB] 4-2 代码仓库介绍.mp4
 [3.4 MB] 4-12 commitLog写入逻辑细节分析.mp4
 [22.7 MB] 4-15 消息结构体封装的实践.mp4
 [39.2 MB] 4-5 基于mmap的读写工具封装(一)基础功能的实现.mp4
 [27.7 MB] 4-1 本章介绍.mp4
 [2.9 MB] 4-

18 消息写入的配置属性同步更新 (2).mp4
 [102.3 MB] 4-19 多线程场景下mmap的读写如何优化.mp4
 [65.2 MB] 4-10 mq基础配置的封装.mp4
 [30.7 MB] 4-20 commitlog追加写入数据测试.mp4
 [16.3 MB] 📁 第1章 课程导学介绍 1-2 课程详细内容安排【更多精选‖公众号:CunWorknotes】 .mp4
 [69.5 MB] 1-1 手写消息中间件--课程导学.mp4
 [79.0 MB] 📁 第3章 消息中间件架构设计篇 3-10 本章回顾【更多精选‖公众号:CunWorknotes】 .mp4
 [4.2 MB] 3-8 复杂消息功能思考(三)事务消息是怎么一回事?.mp4
 [17.3 MB] 3-6 复杂消息功能思考(一)消息重试机制如何实现?.mp4
 [20.7 MB] 3-3 ConsumerQueue介绍-面对多消费者,消息的分配要如何设计.mp4
 [163.7 MB] 3-2 CommitLog介绍-MQ的消息都存在哪儿?.mp4
 [128.2 MB] 3-9 复杂消息功能思考(四)内存映射自扩容设计思路.mp4
 [9.0 MB] 3-5 消息集群架构思考(二)多节点存储的架构要如何实现?.mp4
 [18.1 MB] 3-1 本章介绍.mp4
 [22.8 MB] 3-7 复杂消息功能思考(二)延迟消息要怎么做?.mp4
 [16.4 MB] 3-4 消息集群架构思考(一)为什么消息队列还需用到注册中心?.mp4
 [12.1 MB] 📁 第13章 【手写篇 - 第十步】基于消息队列综合实战 13-2 MQ多泳道环境的实现.mp4
 [19.8 MB] 13-4 本章回顾.mp4
 [2.9 MB] 13-1 本章介绍.mp4
 [1.7 MB] 13-3 Kafka和实时计算.mp4
 [12.4 MB] 📁 第2章 深入常用消息队列原理 2-2 RocketMq架构原理深入剖析.mp4
 [452.6 MB] 2-3 Kafka架构原理深入剖析.mp4
 [330.5 MB] 2-4 三种消息队列对比剖析.mp4
 [98.3 MB] 2-1 RabbitMq架构原理深入剖析.mp4
 [292.5 MB] 📁 第12章 【手写篇 - 第九步】可视化管理控制台设计与实战1 12-2 基础控制台的接口开发.mp4
 [4.1 MB] 12-3 Broker数据的上报实现【整理不易‖记得关注:CunWorKNotes】.mp4
 [36.9 MB] 12-1 本章介绍.mp4
 [1.5 MB] 12-6 本章介绍.mp4
 [1.1 MB] 12-4 控制台的基础开发思路梳理.mp4
 [39.2 MB] 12-5 控制台效果演示.mp4
 [4.7 MB] 📁 第14章 课程回顾与常见面试题剖析 14-2 课程回顾.mp4
 [6.3 MB] 14-1 本章介绍.mp4
 [3.9 MB] 📁 第9章 【手写篇 - 第六步】复杂消息处理(一) - 消息重试功能的设计与实现 9-4 Consumer消息重试链路在时间轮中的运作细节梳理【公重号:CunWorkNotes】.mp4
 [26.2 MB] 9-5 重试消息的存储效果验证.mp4
 [26.1 MB] 9-10 时间轮事件事件回调通知.mp4
 [25.6 MB] 9-7 时间轮组件的实现(二).mp4
 [30.8 MB] 9-14 本章回顾.mp4
 [2.1 MB] 9-2 消息重试设计思路实现.mp4
 [40.1 MB] 9-9 多极时间轮的切换验证.mp4
 [21.5 MB] 9-12 重试主题的自动创建.mp4
 [34.0 MB] 9-6 时间轮组件的实现(一).mp4
 [47.3 MB] 9-3 消息重试Netty请求链路打通.mp4
 [46.7 MB] 9-1 本章介绍.mp4
 [2.7 MB] 9-13 消息重试队列推送和消费的实现.mp4
 [34.2 MB] 9-11 重试监听器回调.mp4
 [30.7 MB] 9-8 时间轮组件的效果验证.mp4
 [7.5 MB] 📁 第5章 【手写篇 - 第二步】消息分派的核心 - ConsumeQueue分析与实战 5-13 consumequeue的offset更新实现【公重号:CunWorkNotes】.mp4
 [63.5 MB] 5-9 consumequeue文件的映射写入和offset更新.mp4
 [40.4 MB] 5-14 多消费者消费效果验证.mp4
 [23.8 MB] 5-7 【实战】ConsumeQueue存储 预热链路逻辑搭建.mp4
 [58.6 MB] 5-3 consumequeue的文件存储结构设计.mp4
 [35.8 MB] 5-4 【实战】ConsumeQueue存储结构实现(一)ConsumerQueue的offset数据结构设计.mp4
 [16.3 MB] 5-6 【实战】ConsumeQueue存储结构实现(三)ConsumeQueue的offset定时刷盘机制.mp4
 [24.8 MB] 5-10 consumeQueue处理器的基础接口定义.mp4
 [11.0 MB] 5-5 【实战】ConsumeQueue存储结构实现(二)offset映射模型的实现.mp4
 [24.8 MB] 5-2 针对ConsumerQueue的dispatcher操作.mp4
 [25.3 MB] 5-8 【实战】ConsumeQueue文件的预热实现.mp4
 [47.1 MB] 5-1 本章介绍.mp4
 [2.8 MB] 5-12 consumequeue的数据读取实现.mp4
 [46.8 MB] 5-11 consumeQueue的offset定位获取.mp4
 [28.2 MB] 📁 第7章 【手写篇 - 第四步】客户端SDK设计与实战 7-7 Producer端消息发送基础接口定义【整理不易‖记得关注:CunWorKNotes】.mp4
 [42.6 MB] 7-12 Kakfa,RocketMQ中的重平衡策略了解.mp4
 [14.7 MB] 7-16 消费端拉消息场景测试.mp4
 [21.9 MB] 7-9 Consumer基础接口的开发.mp4
 [22.8 MB] 7-17 消费端拉数据后回应ack.mp4
 [70.8 MB] 7-14 消费者消息拉取监听器实现.mp4
 [37.6 MB] 7-8 Producer发送数据到Broker端持久化实现.mp4
 [53.7 MB] 7-13 消息消费需要考虑哪些问题.mp4
 [14.8 MB] 7-6 客户端拉取出broker地址功能实现.mp4
 [43.1 MB] 7-15 消息拉去请求链路完善.mp4
 [64.2 MB] 7-4 Producer角色如何与NameServer建立网络连接.mp4
 [50.0 MB] 7-11 重平衡问题讲解.mp4
 [55.6 MB] 7-1 本章介绍.mp4
 [4.1 MB] 7-18 全链路mq推送与消费验证.mp4
 [33.4 MB] 7-3 Netty异步转同步的功能封装.mp4
 [77.2 MB] 7-10 消息重平衡过程的梳理.mp4
 [7.9 MB] 7-2 如何设计一款消息队列的客户端SDK.mp4
 [9.1 MB] 7-19 本章回顾.mp4
 [2.2 MB] 📁 第6章 【手写篇 - 第三步】注册中心 - nameserver设计与实战 6-21 .mp4
 [51.3 MB] 6-3 注册中心的设计与实现(一)事件总线的发布能力实现【优质资源‖关注:cunWorkNotes 解锁】.mp4
 [40.9 MB] 6-17 nameserver主从复制-同步复制,异步复制,半同步复制的三种模式实现(一)【不易整理‖请关注:CunWorkNoteS】.mp4
 [58.3 MB] 6-12 -2 nameserver主从复制-主节点同步进程开启.mp4
 [39.7 MB] 6-1 本章介绍.mp4
 [14.9 MB] 6-24 本章回顾.mp4
 [4.4 MB] 6-16 nameserver主从复制-同步效果验证.mp4
 [46.0 MB] 6-6 注册中心的设计与实现(四)非法节点的剔除逻辑完善.mp4
 [45.1 MB] 6-14 nameserver主从复制-从节点连接主节点.mp4
 [60.3 MB] 6-10 nameserver集群架构的设计思路剖析.mp4
 [12.1 MB] 6-11 -1 nameserver主从复制-主节点同步进程开启.mp4
 [35.5 MB] 6-19 链式复制架构的介绍.mp4
 [9.2 MB] 6-4 注册中心的设计与实现(二)基于spi机制实现处理器实现.mp4
 [37.3 MB] 6-5 注册中心的设计与实现(三)事件监听的逻辑完善.mp4
 [84.9 MB] 6-18 nameserver主从复制-同步复制,异步复制,半同步复制的三种模式实现(二).mp4
 [34.5 MB] 6-15 nameserver主从复制-从节点接收主节点数据同步过程.mp4
 [27.0 MB] 6-20 链式复制的初始化实现mov.mp4
 [44.2 MB] 6-9 broker和nameserver的访问测试.mp4
 [42.1 MB] 6-13 nameserver主从复制-主节点同步线程.mp4
 [49.7 MB] 6-7 注册中心的设计与实现(五)broker与nameserver的网络通信建立.mp4
 [35.3 MB] 6-2 注册中心的设计与实现-基础骨架的搭建.mp4
 [41.5 MB] 6-22 链式复制的实现-全链路ack反馈的实现.mp4
 [52.5 MB] 6-8 注册中心的设计与实现(六)broker远程通信sdk的封装实现.mp4
 [70.3 MB] 📁 第8章 【手写篇 -第五步】broker高可用架构拓展实战 8-15 本章总结【更多精选‖公众号:CunWorknotes】 .mp4
 [3.4 MB] 8-11 Broker主从同步复制实现与验证.mp4
 [40.5 MB] 8-7 Broker集群的复制逻辑剖析【持续更新‖免费提供:CunworknoteS】.mp4
 [4.8 MB] 8-10 .mp4
 [36.6 MB] 8-6 面对Broker集群,客户端拉取ip的实现【不易整理‖请关注:CunWorkNoteS】.mp4
 [37.9 MB] 8-14 Broker主从切换效果实现.mp4
 [46.2 MB] 8-3 topic的动态创建实现.mp4
 [73.3 MB] 8-13 Broker主节点宕机监听处理.mp4
 [48.7 MB] 8-5 Broker集群模式下的实例注册逻辑实现.mp4
 [79.9 MB] 8-4 动态创建topic效果验证.mp4
 [23.0 MB] 8-1 本章介绍.mp4
 [3.2 MB] 8-2 Broker的主从复制思路整理.mp4
 [9.6 MB] 8-8 Broker的主从链接通道初始化建立实现.mp4
 [85.7 MB] 8-12 Broker主从切换过程中会遇到的问题.mp4
 [61.3 MB] 8-9 Broker主从节点多目录文件拆解.mp4
 [23.4 MB] 📁 第10章 【手写篇 - 第七步】复杂消息处理(二) - 延迟消息功能的设计与实现 10-1 本章介绍.mp4
 [2.0 MB] 10-2 延迟消息设计以及使用场景介绍.mp4
 [13.4 MB] 10-6 本章介绍.mp4
 [1.3 MB] 10-3 延迟消息的效果实现【资源精选‖更多关注:CunworkNotes】.mp4
 [46.1 MB] 10-5 延迟消息的数据恢复如何实现【更多精选‖公众号:CunWorknotes】 .mp4
 [56.8 MB] 10-4 延迟消息的持久化实现.mp4
 [39.9 MB] 📁 第11章 【手写篇 - 第八步】复杂消息处理(三) -事务消息功 11-1 本章介绍.mp4
 [2.7 MB] 11-4 本地事务回调接口的实现.mp4
 [76.3 MB] 11-5 事务消息回调处理.mp4
 [72.4 MB] 11-7 本章回顾.mp4
 [1.5 MB] 11-3 事务消息的half消息提交.mp4
 [47.5 MB] 11-6 事务消息的效果验证.mp4
 [31.4 MB] 11-2 事务消息设计思路回顾.mp4
 [3.6 MB] 源码+文档.exe [23.9 MB] 适合人群 中间件开发者 后端工程师 对消息队列感兴趣的程序员 学习收获 掌握消息队列核心机制 能够手写分布式消息队列 提升系统架构能力 祝您学习愉快! 学有所成,前程似锦!