前言
最近的时间差不多都围绕着RocketMQ的学习上,一开始从了解RocketMQ的场景到RocketMQ的一个使用,然后到源码的阅读。前面两个过程无需多说,到了读源码的阶段,我时常问自己,读这份源码的意义在于哪?
感想
我从namesrv的启动类入手开始阅读,作为切入点我觉得没错,但是时常因为某个细枝末节的事情从而打断对整块功能块的认识。这点我觉得是在读源码的一个误区吧,首先你想要掌握所有的代码块的细节是存在一个性价比不高的问题。为什么这么说呢?
第一你了解的这些细节对你有什么帮助呢,如果仅仅只是逻辑处理上的一个点,这个点又不会影响到你对这块功能的认识,大可不必深究。第二,为了想要弄明白这些细节需要花比较多的时间,而且很有可能找不到相关的资料。
另外一个点就是读源码的目的是什么?我觉得一开始我的目的性就不够强,导致读了部分RocketMQ的源码,但对其框架的优点却无法把握住。RocketMQ作为一款优秀的通信中间件,更需要把重点放在其:
- 高性能、高可用
- 如何实现最终一致性
- 了解 Netty 在分布式中间件如何实现网络通信以及各种异常场景的处理
- MQ 消息存储
- 如何实现心跳监测
的确是这样,学习这个框架就是要学这些核心知识点,一些无关紧要的逻辑处理根本不值得花时间去学习。所以后面的阅读过程中,我会以某个重点为入口,去看这份代码。