如何正确、高效地阅读源代码?
十一假期抽空看了看 Kafka 源碼,順便總結了一些高效讀源碼的方法,用一句話概括:用最高效的方式,讀最核心的源碼。
先說說怎樣才算是高效的方式吧,通常來說,閱讀大型項目源碼的方法有 2 種:
- 自上而下(Top-Down):從 main 函數向下深入,直到最底層的代碼。好處在于,你可以遍歷完整的頂層功能路徑,進而了解各個功能的整體流程。 
- 自下而上(Bottom-Up):與自上而下相反,先搞懂每個組件的代碼和實現機制,然后向上延展,并將其組裝,有助于你掌握底層的基礎組件代碼。 
?
這 2 種方法各有千秋,但我發現,兩者相結合可以實現 1+1>2 的效果,具體怎么做呢?
?
首先,確認最小單位的組件——主要看 Kafka 源碼中的包結構,比如 controller、log、server 等,這些基本是按組件劃分的,優先級順序是“log-->network-->controller-->server-->coordinator-->……”,因為后面的組件會頻繁調用前面的。
?
在了解單個組件的源碼結構后,就可以切換成自上而下的方式,從一個大的功能點入手,逐步深入到各個底層組件的源碼。得益于前面的積累,你會對下沉過程中碰到的各層基礎代碼非常熟悉,成就感很大。
?
關于如何選擇大的功能點,可以從 Kafka 的命令行工具開始,搞明白每一步是如何實現的,在向下鉆取的過程中不斷復習單個組件的原理,并將其結合。
?
比起單純用自上而下或自下而上的方式,這套混合方法兼具了二者的優點。在一遍遍重復地過程中,你會熟知各個組件間的交互邏輯,成為源碼高手。
如何找到最核心的源碼?
這里,分享給你一張 Kafka 源碼全景圖。從功能上講,Kafka 源碼分為四大模塊。其中,服務器端源碼是理解 Kafka 底層架構,特別是系統運行原理的基礎,其他三個模塊源碼都很依賴它。因此,要解讀 Kafka 源碼,要先拿下服務器端代碼。
這張圖出自胡夕,他是老虎證券技術總監,Apache Kafka Committer,曾任職于 IBM、搜狗、新浪微博、人人貸等公司,主導過多個十億級/天的消息引擎業務系統的設計與搭建,具有豐富的線上環境定位和診斷調優經驗,為多家大型公司提供過企業級 Kafka 培訓。
最早知道他,是因為那本《Apache Kafka 實戰》,估計不少朋友都讀過,豆瓣評分?9.0。后來,得知他推出了專欄《Kafka 核心源碼解讀》,我第一時間就訂閱了。抽空跟下來,感覺收獲很大,這里推薦給你。
?
拼團+口令「study2020」立省 ¥35
到手 ¥64,僅限今日
新人專享 ¥19.9
他是如何講解 Kafka 源碼的?
基于對服務器端源碼的理解,他按功能將其劃分為 7 個模塊,每個模塊都會展開詳細介紹,包括各個組件的源碼分析。
? ? ? ???
細粒度講解:流程圖+代碼注釋+思維導圖
他將“流程圖+代碼注釋”相結合,對重點內容進行細粒度講解,并結合自己的實戰經驗為你劃重點。這樣,讀源碼前,你可以通過流程圖,對各個方法的實現邏輯有個大致的了解。同時,每一講末尾還附一張思維導圖,幫你總結回顧,加深印象。
真實案例講解,累計解決方案
為了確保你能學以致用,他在專欄里分享了 25+ 真實案例,幫你累計常見問題的解決方案,有些甚至是不見諸于文檔的“武林秘籍”。
傳遞社區新動向,及重大功能改進
Kafka 源碼每天都在不斷演進,想要玩轉,就要知道未來社區的更新計劃及功能改進。在專欄中,他定期分享了最新的動態資訊,讓你真正有參與到社區的感覺。
分享優質學習資料+經典面試題講解
除此之外,他還會和你分享一些延伸內容,比如:成為 Apache Kafka 社區代碼貢獻者的具體方法、實用的 Kafka 學習資料、經典面試題講解等等。
今天,給大家爭取了【國慶福利】:
原價 99,拼團+口令「study2020」立省 35
到手 64,不過優惠時間不長,僅限今天
如果你是新人,那只要 19.9 就能入手
今年國慶假期比往常多一天,玩累了正好學習下,充充電,但課程這么多,還是挺難分辨優劣的。趁著這次機會,再推薦幾門讓我收獲很大的課。
現在用口令「study2020」都可以享「折上折」,優惠價基礎上再減 15,但「僅限今天」有效。
1、RPC 實戰與核心原理
如果你注意觀察,涉及 RPC 框架開發的工作崗位,基本都在基礎架構部,而且薪水不低。京東技術架構部首席架構師,深入剖析 RPC 框架的系統應用,通過解決 20 個 RPC 相關的高頻場景化問題,帶你掌握 RPC 核心原理及架構設計要點,手把手設計一個靈活的 RPC 框架。
拼團+口令「study2020」立省?¥35
到手 ¥64,僅限今日
新人專享 ¥19.9
2、Elasticsearch 核心技術與實戰
這門課之前就給你們推薦過,反響挺不錯,說實話是我看過最好的 es 課了。eBay Pronto 平臺技術負責人,基于 ES 最新 7.x 版本講解,內容包括開發與運維,不僅局限于 ES,ELK 都有講到,還覆蓋了官方 Elastic 認證的所有考點,非常超值。現在已經有 25000 人訂閱了,要想快速構建分布式搜索和分析引擎,選它沒錯。
拼團+口令「study2020」立省?¥85
到手?¥114,僅限今日
新人專享 ¥49.9
3、Redis 核心技術與實戰:
如果你是一位后端工程師,面試時八成會被問到 Redis。可以說,熟練使用 Redis 就是后端工程師的必備技能。作者長期與阿里、螞蟻金服、百度、華為、中興等公司開展項目合作。在專欄中,他為你總結了一條系統高效的 Redis 學習路徑,帶你透徹理解 Redis 核心原理,掌握高并發場景下的緩存解決方案,并解鎖 Redis 高頻面試題。
拼團+口令「study2020」立省?¥45
到手 ¥84,僅限今日
新人專享 ¥19.9
再啰嗦一句,以上課程,結算時用口令「study2020」都能享「折上折」:優惠基礎上再減 15 元。
但有效期 僅限今日,想選其他課,也 OK,移步「閱讀原文」選課使用????
總結
以上是生活随笔為你收集整理的如何正确、高效地阅读源代码?的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 延时队列实现的几种姿势
- 下一篇: Redis的主从复制是如何做的?复制过程
