經典的原始碼像詩,值得細細品味
1. 明確目的
閱讀書籍和原始碼最好帶著自己的問題和目的,這樣可以避免“看了就忘”的尷尬狀態。
讀研期間,為了掌握嵌入式開發,讀了很多Linux的核心原始碼,摸索清楚了一個Linux系統從系統加電到控制檯出現的流程。剛畢業轉Java開發那會,為了掌握後端開發,讀了很多Spring的原始碼,搞清楚了一個請求從到達後端伺服器開始,到傳迴響應的流程、搞清楚了IoC和AOP的工作原理。
最近開始閱讀RocketMQ的原始碼,目的有兩個:
-
學習MQ的通用知識(可靠傳送、可靠消費、順序訊息、訊息優先順序等等)、RocketMQ自己的實現,以及不同MQ之間的比較。
-
學習RocketMQ中對Java併發、Netty等框架的使用
2. 基本流程
原始碼閱讀是有一定的套路的。以RocketMQ為例,分享下我的方法:
-
(1)我會先去學會基本的使用;
-
(2)閱讀官網的檔案,瞭解該中介軟體的整體架構、核心概念;
-
(3)梳理基本功能的實現,例如系統啟動、傳送訊息、消費訊息的過程;
-
(4)關鍵點梳理,例如高可用如何實現?上億的堆積能力如何實現?低延遲如何實現?順序訊息如何實現?
另外,如果需要精讀甚至定製開發時,才有必要搭建一套debug環境。