MQ大牛成长课–从0到1手写分布式消息队列中间件
吃透分布式MQ架构,深挖底层原理,从容应对生产环境中的各类消息队列挑战,问题迎刃而解!
无论你是后端开发、全栈开发、系统架构,还是大数据开发、测试领域,吃透消息中间件都将显著增强你的技术实力。本课程将引领大家从0到1独立构建一款分布式消息中间件,全面洞悉其架构精髓与底层设计智慧。从容应对生产环境中消息队列的复杂挑战,不仅提升对MQ技术的驾驭能力,还能根据实际业务需求进行灵活改造,助力你在消息处理领域高效破局。
适合人群
春秋招冲击大厂的校招生
想深入学习消息队列中间件的技术人员
技术储备
具备一定的Java编程基础
了解分布式架构、 Netty网络框架
环境参数
操作系统 Linux,Window,Mac均可
开发环境 IDEA
工具包 JDK8
项目管理 Maven 3.5+
相关推荐:
SpringBoot3.0 + RocketMq 构建企业级数据中台完结_超星IT(itazs.fun)
新RabbitMQ精讲,提升工程实践能力,培养架构思维|完结无密_超星IT(itazs.fun)
RocketMQ核心技术精讲与高并发抗压实战|完结无密_超星IT(itazs.fun)
试看链接:https://pan.baidu.com/s/1klcVOvx4JQ2jEx7kDRWVFw?pwd=03yc
目录大纲:
-
第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设计与实战 19 节 | 286分钟
本章节主要讲解如何基于Netty设计一款客户端的sdk组件,方便使用者通过rpc请求能够访问nameserver和broker节点。章节内部会涉及到大量的代码实践部分,涉及知识点有:基于Netty封装RPC通讯工具、异步队列、事件总线、安全认证、多/单线程场景下的数据消费处理,broker端接入适配等。…
- 视频: 7-1 本章介绍 (02:32)
- 视频: 7-2 如何设计一款消息队列的客户端SDK (06:24)
- 视频: 7-3 Netty异步转同步的功能封装 (32:15)
- 视频: 7-4 Producer角色如何与NameServer建立网络连接 (17:01)
- 视频: 7-5 拉取broker地址功能实现 (27:33)
- 视频: 7-6 客户端拉取出broker地址功能实现 (16:28)
- 视频: 7-7 Producer端消息发送基础接口定义 (19:01)
- 视频: 7-8 Producer发送数据到Broker端持久化实现 (20:38)
- 视频: 7-9 Consumer基础接口的开发 (12:27)
- 视频: 7-10 消息重平衡过程的梳理 (06:55)
- 视频: 7-11 重平衡问题讲解 (24:20)
- 视频: 7-12 Kakfa,RocketMQ中的重平衡策略了解 (08:53)
- 视频: 7-13 消息消费需要考虑哪些问题 (11:49)
- 视频: 7-14 消费者消息拉取监听器实现 (12:27)
- 视频: 7-15 消息拉去请求链路完善 (22:58)
- 视频: 7-16 消费端拉消息场景测试 (06:15)
- 视频: 7-17 消费端拉数据后回应ack (25:18)
- 视频: 7-18 全链路mq推送与消费验证 (10:19)
- 视频: 7-19 本章回顾 (02:01)
-
第8章 【手写篇 -第五步】broker高可用架构拓展实战 15 节 | 189分钟
基于前面已有实现的sdk组件,broker节点开始从单机版本架构往分布式版本架构进行升级。章节内会涉及到大量的代码实践部分,涉及知识点有:Netty实战、主从集群中的数据复制功能实现、常见集群选举算法的讲解、手写实现Broker集群的选举功能、主备节点的自动切换机制实现等。…
- 视频: 8-1 本章介绍 (02:27)
- 视频: 8-2 Broker的主从复制思路整理 (08:15)
- 视频: 8-3 topic的动态创建实现 (25:15)
- 视频: 8-4 动态创建topic效果验证 (07:44)
- 视频: 8-5 Broker集群模式下的实例注册逻辑实现 (23:16)
- 视频: 8-6 面对Broker集群,客户端拉取ip的实现 (10:02)
- 视频: 8-7 Broker集群的复制逻辑剖析 (03:23)
- 视频: 8-8 Broker的主从链接通道初始化建立实现 (29:04)
- 视频: 8-9 Broker主从节点多目录文件拆解 (08:44)
- 视频: 8-10 Broker主从异步复制的实现 (11:17)
- 视频: 8-11 Broker主从同步复制实现与验证 (13:23)
- 视频: 8-12 Broker主从切换过程中会遇到的问题 (18:56)
- 视频: 8-13 Broker主节点宕机监听处理 (13:25)
- 视频: 8-14 Broker主从切换效果实现 (09:48)
- 视频: 8-15 本章总结 (03:23)
-
第9章 【手写篇 – 第六步】复杂消息处理(一) – 消息重试功能的设计与实现 9 节 | 101分钟
本章节主要围绕消息重试机制进行讲解,市面上的主流MQ产品都会有重试机制,而我们会通过手写实现重试机制,更深入地带大家去理解这里面的原理。主要涉及知识点有:Netty实战、多级时间轮组件实现、死信队列的实现等。
- 视频: 9-1 本章介绍 (01:43)
- 视频: 9-2 消息重试设计思路实现 (17:42)
- 视频: 9-3 消息重试Netty请求链路打通 (15:35)
- 视频: 9-4 Consumer消息重试链路在时间轮中的运作细节梳理 (07:01)
- 视频: 9-5 重试消息的存储效果验证 (07:00)
- 视频: 9-6 时间轮组件的实现(一) (23:28)
- 视频: 9-7 时间轮组件的实现(二) (16:20)
- 视频: 9-8 时间轮组件的效果验证 (02:52)
- 视频: 9-9 多极时间轮的切换验证 (08:45)
-
第10章 【手写篇 – 第七步】复杂消息处理(二) – 延迟消息功能的设计与实现 6 节 | 52分钟
基于上一章节实现的时间轮组件,本章节会讲解如何基于时间轮组件去实现延迟消息的能力,以及讲解市面上的各大开源组件中有哪些地方也使用到了时间轮组件。
- 视频: 10-1 本章介绍 (01:13)
- 视频: 10-2 延迟消息设计以及使用场景介绍 (06:37)
- 视频: 10-3 延迟消息的效果实现 (12:10)
- 视频: 10-4 延迟消息的持久化实现 (12:07)
- 视频: 10-5 延迟消息的数据恢复如何实现 (18:05)
- 视频: 10-6 本章介绍 (01:09)
-
第11章 【手写篇 – 第八步】复杂消息处理(三) -事务消息功能的设计与实现 7 节 | 71分钟
本章节会讲解如何基于Broker的半提交消息机制来实现事务消息的能力,其底层会参考RocketMQ对于事务消息的原理进行实现,涉及知识点有:Netty实战、多阶段提交事务消息确认机制、消息回溯实现等。
- 视频: 11-1 本章介绍 (01:34)
- 视频: 11-2 事务消息设计思路回顾 (03:19)
- 视频: 11-3 事务消息的half消息提交 (15:49)
- 视频: 11-4 本地事务回调接口的实现 (20:51)
- 视频: 11-5 事务消息回调处理 (21:09)
- 视频: 11-6 事务消息的效果验证 (06:13)
- 视频: 11-7 本章回顾 (01:24)
-
第12章 【手写篇 – 第九步】可视化管理控制台设计与实战 6 节 | 28分钟
基于之前搭建好的nameserver和broker节点,这一章会讲解如何搭建一套可视化的控制台对整个MQ集群进行更加友好的监控,本章会涉及到前后端两部分的内容讲解,会涉及到的知识点有:Netty通讯、Vue.js与element-ui的使用,各种数据指标与监控机制的实现等。…
- 视频: 12-1 本章介绍 (00:50)
- 视频: 12-2 基础控制台的接口开发 (02:19)
- 视频: 12-3 Broker数据的上报实现 (08:46)
- 视频: 12-4 控制台的基础开发思路梳理 (12:28)
- 视频: 12-5 控制台效果演示 (02:03)
- 视频: 12-6 本章介绍 (00:54)
-
第13章 【手写篇 – 第十步】基于消息队列综合实战 4 节 | 32分钟
本章节会结合市面上开源的Kafka、RocketMQ两款消息队列产品,讲解如何在实战中对其进行性能调优以及扩展开发。
- 视频: 13-1 本章介绍 (01:25)
- 视频: 13-2 MQ多泳道环境的实现 (15:31)
- 视频: 13-3 Kafka和实时计算 (12:07)
- 视频: 13-4 本章回顾 (02:41)
-
第14章 课程回顾与常见面试题剖析 2 节 | 9分钟
本章节内容会结合MQ相关的面试题和大家进行剖析,从MQ的实现原理层面去分析问题,提升大家的综合实力。
- 视频: 14-1 本章介绍 (02:22)
- 视频: 14-2 课程回顾 (06:21)
本课程已完结 -