# 从0到1手写分布式消息队列中间件视频课程（MQ大牛成长必学）

*Published:* 2024-06-16
*Author:* 客服001

#### 温馨提醒

如果文章内容或图片资源失效，请留言反馈，我们会及时处理，谢谢

本文最后更新于2024年12月29日，已超过 180天没有更新



**吃透分布式MQ架构，深挖底层原理，从容应对生产环境中的各类消息队列挑战，问题迎刃而解！**

[![](https://www.xarjtc.com/wp-content/uploads/2024/06/f0f7025d1be42bd.webp)](https://www.xarjtc.com/wp-content/uploads/2024/06/f0f7025d1be42bd.webp)

**课程介绍**

> 无论你是后端开发、全栈开发、系统架构，还是大数据开发、测试领域，吃透消息中间件都将显著增强你的技术实力。本课程将引领大家从0到1独立构建一款分布式消息中间件，全面洞悉其架构精髓与底层设计智慧。从容应对生产环境中消息队列的复杂挑战，不仅提升对MQ技术的驾驭能力，还能根据实际业务需求进行灵活改造，助力你在消息处理领域高效破局。

**适合人群**

春秋招冲击大厂的校招生

想深入学习消息队列中间件的技术人员

**技术储备**

具备一定的Java编程基础

了解分布式架构、 Netty网络框架

**环境参数**

操作系统 Linux，Window，Mac均可

开发环境 IDEA

工具包 JDK8

项目管理 Maven 3.5+

**章节目录：**

第1章 课程导学介绍 试看2 节 | 13分钟

本章主要对课程整体内容进行全面介绍，包括内容安排、学习目标、亮点优势、学习建议等。

收起列表

视频：

1-1 手写消息中间件--课程导学 (06:58)

试看

视频：

1-2 课程详细内容安排 (05:22)

第2章 深入常用消息队列原理4 节 | 71分钟

本章节会和大家一起剖析现有市面上的各种消息队列产品的底层原理，了解它们内部的设计精髓，为后续手写实现消息队列打下基础。

收起列表

视频：

2-1 RabbitMq架构原理深入剖析 (21:24)

视频：

2-2 RocketMq架构原理深入剖析 (22:38)

视频：

2-3 Kafka架构原理深入剖析 (18:44)

视频：

2-4 三种消息队列对比剖析.mp4 (08:01)

第3章 消息中间件架构设计篇10 节 | 113分钟

本章节主要是对消息队列内部的各种功能特性进行设计，涉及到有：MMap读写、多消费队列设计、注册中心设计、集群化架构中的数据一致性做法、死信队列、多级时间轮、分布式事务等内容。

收起列表

视频：

3-1 本章介绍 (02:10)

视频：

3-2 CommitLog介绍-MQ的消息都存在哪儿？ (11:49)

视频：

3-3 ConsumerQueue介绍-面对多消费者，消息的分配要如何设计 (16:13)

视频：

3-4 消息集群架构思考（一）为什么消息队列还需用到注册中心？ (11:09)

视频：

3-5 消息集群架构思考（二）多节点存储的架构要如何实现？ (15:39)

视频：

3-6 复杂消息功能思考（一）消息重试机制如何实现？ (15:43)

视频：

3-7 复杂消息功能思考（二）延迟消息要怎么做？ (14:13)

视频：

3-8 复杂消息功能思考（三）事务消息是怎么一回事？ (13:56)

视频：

3-9 复杂消息功能思考（四）内存映射自扩容设计思路 (07:43)

视频：

3-10 本章回顾 (03:37)

第4章 【手写篇 - 第一步】 数据存储核心 - commitLog设计与实战20 节 | 253分钟

本节主要是从0到1手写实现单机架构下的commitLog消息存储能力，章节内容侧重于代码实战，涉及到有：操作系统层面的IO原理、MMap的读写实现、文件自扩容、如何保证消息的有序性、commitLog文件的offset管理等内容。

收起列表

视频：

4-1 本章介绍 (02:40)

视频：

4-2 代码仓库介绍 (02:37)

视频：

4-3 消息原始数据存储结构讲解 (04:46)

视频：

4-4 操作系统原理之 - 传统文件IO读写介绍 (17:51)

视频：

4-5 基于mmap的读写工具封装（一）基础功能的实现 (17:24)

视频：

4-6 基于mmap的读写工具封装（二）mmap的内存释放讲解 (10:14)

视频：

4-7 基于mmap的读写工具封装（三）mmap工具的效果验证 (12:23)

视频：

4-8 如何实现mq消息的顺序写入 (15:20)

视频：

4-9 mq消息存储配置的管理 (16:19)

视频：

4-10 mq基础配置的封装 (17:26)

视频：

4-11 Broker的启动类设计 (14:53)

视频：

4-12 commitLog写入逻辑细节分析 (10:55)

视频：

4-13 如何获取最新写入的commitLog文件 (24:57)

视频：

4-14 消息内容结构体设计 (06:37)

视频：

4-15 消息结构体封装的实践 (12:37)

视频：

4-16 commitlog文件剩余空间检测机制 (14:42)

视频：

4-17 消息投递offset更新机制的实现 (19:12)

视频：

4-18 消息写入的配置属性同步更新 (08:00)

视频：

4-19 多线程场景下mmap的读写如何优化 (16:36)

视频：

4-20 commitlog追加写入数据测试 (06:43)

第5章 【手写篇 - 第二步】消息分派的核心 - ConsumeQueue分析与实战14 节 | 154分钟

本章节内容主要带领大家实现MQ里面的消费队列相关功能，主要用于解决如何快速定位到源消息，实现多消费者并行消费的能力。整体内容侧重于代码实践，涉及知识点有：MMap的读写实现、消息的dispatch操作、文件自扩容、offset持久化机制等内容。...

收起列表

视频：

5-1 本章介绍 (02:25)

视频：

5-2 针对ConsumerQueue的dispatcher操作 (09:05)

视频：

5-3 consumequeue的文件存储结构设计 (13:52)

视频：

5-4 【实战】ConsumeQueue存储结构实现（一）ConsumerQueue的offset数据结构设计 (09:22)

视频：

5-5 【实战】ConsumeQueue存储结构实现（二）offset映射模型的实现 (09:12)

视频：

5-6 【实战】ConsumeQueue存储结构实现（三）ConsumeQueue的offset定时刷盘机制 (06:52)

视频：

5-7 【实战】ConsumeQueue存储 预热链路逻辑搭建 (22:01)

视频：

5-8 【实战】ConsumeQueue文件的预热实现 (15:43)

视频：

5-9 consumequeue文件的映射写入和offset更新 (09:19)

视频：

5-10 consumeQueue处理器的基础接口定义 (05:00)

视频：

5-11 consumeQueue的offset定位获取 (09:12)

视频：

5-12 consumequeue的数据读取实现 (15:31)

视频：

5-13 consumequeue的offset更新实现 (18:04)

视频：

5-14 多消费者消费效果验证 (07:48)

第6章 【手写篇 - 第三步】注册中心 - nameserver设计与实战8 节 | 140分钟

本章节主要讲解如何从0到1手写实现一款分布式架构下的注册中心产品，主要用于解决对Broker节点的数据管理问题。老师会先基于Netty实现单机架构的注册中心，然后再讲解如何扩展支持主从同步，链式同步同复杂功能。本章主要侧重于代码实践，涉及知识点有：Netty实践、同步/异步/半同步 复制的实现、链式复制的头尾节点读写分...

收起列表

视频：

6-1 本章介绍 (12:42)

视频：

6-2 注册中心的设计与实现-基础骨架的搭建 (21:03)

视频：

6-3 注册中心的设计与实现（一）事件总线的发布能力实现 (17:55)

视频：

6-4 注册中心的设计与实现（二）基于spi机制实现处理器实现 (12:51)

视频：

6-5 注册中心的设计与实现（三）事件监听的逻辑完善 (24:59)

视频：

6-6 注册中心的设计与实现（四）非法节点的剔除逻辑完善 (14:24)

视频：

6-7 注册中心的设计与实现（五）broker与nameserver的网络通信建立 (11:34)

视频：

6-8 注册中心的设计与实现（六）broker远程通信sdk的封装实现 (24:12)

第7章 【手写篇 - 第四步】客户端SDK设计与实战内容更新中

本章节主要讲解如何基于Netty设计一款客户端的sdk组件，方便使用者通过rpc请求能够访问nameserver和broker节点。章节内部会涉及到大量的代码实践部分，涉及知识点有：基于Netty封装RPC通讯工具、异步队列、事件总线、安全认证、多/单线程场景下的数据消费处理，broker端接入适配等。...

第8章 【手写篇 -第五步】broker高可用架构拓展实战内容更新中

基于前面已有实现的sdk组件，broker节点开始从单机版本架构往分布式版本架构进行升级。章节内会涉及到大量的代码实践部分，涉及知识点有：Netty实战、主从集群中的数据复制功能实现、常见集群选举算法的讲解、手写实现Broker集群的选举功能、主备节点的自动切换机制实现等。...

第9章 【手写篇 - 第六步】复杂消息处理(一） - 消息重试功能的设计与实现内容更新中

本章节主要围绕消息重试机制进行讲解，市面上的主流MQ产品都会有重试机制，而我们会通过手写实现重试机制，更深入地带大家去理解这里面的原理。主要涉及知识点有：Netty实战、多级时间轮组件实现、死信队列的实现等。

第10章 【手写篇 - 第七步】复杂消息处理(二） - 延迟消息功能的设计与实现内容更新中

基于上一章节实现的时间轮组件，本章节会讲解如何基于时间轮组件去实现延迟消息的能力，以及讲解市面上的各大开源组件中有哪些地方也使用到了时间轮组件。

第11章 【手写篇 - 第八步】复杂消息处理(三） -事务消息功能的设计与实现内容更新中

本章节会讲解如何基于Broker的半提交消息机制来实现事务消息的能力，其底层会参考RocketMQ对于事务消息的原理进行实现，涉及知识点有：Netty实战、多阶段提交事务消息确认机制、消息回溯实现等。

第12章 【手写篇 - 第九步】可视化管理控制台设计与实战内容更新中

基于之前搭建好的nameserver和broker节点，这一章会讲解如何搭建一套可视化的控制台对整个MQ集群进行更加友好的监控，本章会涉及到前后端两部分的内容讲解，会涉及到的知识点有：Netty通讯、Vue.js与element-ui的使用，各种数据指标与监控机制的实现等。...

第13章 【手写篇 - 第十步】基于消息队列综合实战内容更新中

本章节会结合市面上开源的Kafka、RocketMQ两款消息队列产品，讲解如何在实战中对其进行性能调优以及扩展开发。

第14章 课程回顾与常见面试题剖析内容更新中

本章节内容会结合MQ相关的面试题和大家进行剖析，从MQ的实现原理层面去分析问题，提升大家的综合实力。

本课程持续更新中