見字如面,我是威哥,一個從普通二本院校畢業,從未曾接觸分布式、微服務、高并發到通過技術分享實作職場蛻變,成長為RocketMQ社區優秀布道師、大廠資深架構師,出版《RocketMQ技術內幕》一書,在CSDN中記錄了我的成長歷程,歡迎大家關注我,隨時可私信我,一起交流進步,
我在嘗試學習RocketMQ之前未曾接觸過訊息中間件,通過自己提煉的學習方法,最終出版《RocketMQ技術內幕》一書,并且成為RocketMQ社區優秀布道師,讓我有了一個非常亮眼的標簽,極大了提高的我的職場競爭力,在這里和大家分享一下我的方法,
我根據多年的閱讀經驗,整理了這么一套方法:
- 了解這款軟體的使用場景、以及架構設計中將承擔的責任,
- 尋找官方檔案,從整體上把握這款軟體的設計理念,
- 搭建自己的開發除錯環境,運行官方提供Demo示例,為后續深入研究打下基礎,
- 先主干流程再分支流程,注意切割,逐個擊破,
接下來分享一下我在閱讀 RocketMQ 原始碼時的一些經歷,盡量讓上述理論具有畫面感,
1、了解 RocketMQ的應用場景
MQ的使用場景是比較清晰的,它的兩大基本職責是解耦與削峰填谷,
舉一個最簡單的場景:新用戶注冊送積分、送優惠券場景,其原始架構設計通常如下:

可以看出用戶注冊和發優惠券,送積分是緊耦合的, 隨著業務不斷發展,活動部門提出在春節期間用戶注冊不送積分,發優惠券,而是贈送一個新春禮包,如果基于上述架構的話,需要去改動用戶注冊的主流程,違背了設計模式中的對修改關閉、對擴展開放的設計理念,
MQ的出現,可以很好地解決上面的問題:

通過引入MQ,用戶注冊主流程只需要完成注冊邏輯,并向MQ發送一條訊息,然后活動模塊(送積分、送優惠券、送禮包)只需要訂閱MQ中的訊息,進行對應的處理,
這樣訊息注冊主流程會非常的簡單,不管活動種類如何變化,注冊流程無需更改,這樣就實作了解耦,
2 通讀官方檔案,從全域把握其設計理念
了解使用場景以后,接下我們可以去查閱官方檔案,主要包括用戶設計檔案(架構設計),用戶使用手冊等,從全域了解其設計理念,

通過通讀官方檔案,不僅可以得出MQ的整體脈絡(例如NameServer路由發現、訊息發送、訊息存盤、訊息消費、訊息過濾),也能對順序消費,零拷貝、同步刷盤、異步刷盤等“高端大氣上檔次”的高級特性產生興趣與好奇,驅動我們去閱讀其原始碼,探究其實作細節,使得我們在閱讀原始碼中進行一定的自我思考成為了可能,
3、搭建開發除錯環境
不同的系統搭建方式也不同,我這里有一篇文章,手把手教你搭建RocketMQ除錯環境,這里就不細說了,
4 先主干,再分支
在搭建好本地開發環境后,切忌直接用Debug去跟蹤訊息發送的整體流程,因為這個流程實在是太長了,從比較粗粒度來看其流程如下圖所示:

如果大家想一次性將上述流程的原始碼全部看一遍,幾乎是不可能的, 因為訊息發送高可用設計、訊息存盤、刷盤、同步等機制,每個點詳細展開的作業都是海量的,我們沒有這么多連續的時間,所以適當的拆分非常有必要,
經過這樣一分解,就能專注理解其某一塊的設計原理,所需要的連續時間也能大大減少,一口一口“吃”,最終完成整個體系的理解,
好了,本文就介紹到這里了,您的一鍵三連是對我最大的鼓勵,當然可以加筆者微信:dingwpmz,備注CSDN,共同交流探討,
最后分享筆者一個硬核的RocketMQ電子書,您將獲得千億級訊息流轉的運維經驗,

獲取方式:微信搜索【中間件興趣圈】,回復RMQPDF即可獲取,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/277016.html
標籤:其他
