精读 RocketMQ 源码系列(0)---开篇词

982 阅读3分钟

一、搭建源码阅读环境

这个网上有很多实用的教程,我就不重复写一遍了。大家可以参考: www.cnblogs.com/heliusKing/…

该教程我需要提醒一下的是:注意图片里的配置,有关路径的都要改为自己的实际路径

二、 开篇必读

2.1 读源码前要准备什么

如果你之前没有从来没有接触过 RocketMQ,那么强烈建议你先把官网的文档通读一遍:RocketMQ 中文文档 ,重点先看”概念和特性“、”架构设计“两部分,后面的几部分是实践部分,可以暂且不看或略看。

对于之前已经学习过、使用过 RocketMQ 的同学,可以直接往下看,当然如果想复习下相关概念,也可以花点时间先看一下官方文档。

2.2 怎么阅读

源码目录结构:

  • broker: broker 模块(broke 启动进程)☆
  • client :消息客户端,包含消息生产者、消息消费者相关类☆
  • common :公共包
  • dev :开发者信息(非源代码)
  • distribution :部署实例文件夹(非源代码)
  • example: RocketMQ 例代码
  • filter :消息过滤相关基础类
  • filtersrv:消息过滤服务器实现相关类(Filter启动进程)
  • logappender:日志实现相关类
  • namesrv:NameServer实现相关类(NameServer启动进程)☆
  • openmessageing:消息开放标准
  • remoting:远程通信模块,基于Netty
  • srcutil:服务工具类
  • store:消息存储实现相关类☆
  • style:checkstyle相关实现
  • test:测试相关类
  • tools:工具类,监控命令相关实现类

需要我们重点关注的模块已经在后面标了 ☆

代码量

image-20210707201254665.png

大概 10 万行的源码,不算少,但也不要慌,因为实际上,核心代码并不会很多

2.2 原则和思路

原则1:带着问题读源码

这一点我认为非常重要,没有问题,直接丢给你一份项目的源码,根本不知道从何下手。因此在本系列的过程中,我会不断地提出问题,然后带着问题去源码中找答案。

原则2:一条流程到底

跟一个流程,要走到流程最后,形成一个完整的思维链条,这对构建知识框架也非常重要。否则东一锄头西一镰刀,全是知识碎片,不成体系。

原则3:先整体后细节

先对整体流程的关键步骤读个大概,理清逻辑。然后对于一些有价值的细节,再深入探究。这里我必须强调,是有价值的细节,千万不要在无关的代码细节中钻牛角尖,觉得自己不知道这个知识点,一定要死磕搞懂。其实没必要,知识是无穷无尽的,永远有我们不知道的知识点。我们要做的是把有限的时间花在对我们最有价值的知识的学习上。

思路

整体上会以消息为主体,跟随着消息的整个生命周期,来顺一遍消息从发送到存储再到被消费的过程。

2.3 写作方式

虽然是阅读源码的文章,但我并不会贴大段大段的代码到文章中,占用大量篇幅且没有意义。取而代之,我会将关键流程的时序图画出来,同时对于一些关键细节点,会贴出代码一起分析讨论。借助时序图,我相信读者可以更高效地自行阅读 RocketMQ 的源码