1. 程式人生 > 其它 >訊息中介軟體MQ的學習境界和路線

訊息中介軟體MQ的學習境界和路線

《深入理解Java類載入機制,再也不用死記硬背了》裡我提到了對於一門語言的“會”的三個層次。本篇將以知識地圖的形式展現學習訊息中介軟體MQ各個層次要掌握的內容。

 

知識地圖是一種知識導航系統,並顯示不同的知識儲存之間重要的動態聯絡。所以本篇重點不是介紹某個知識點,而是介紹掌握訊息中介軟體,需要看哪些文章的導航。

 

訊息中介軟體MQ會的三個層次與黃金圈法則相對應。

 

 

What層:hello world 級別

 

What層:hello world 級別,知道它能做什麼。在《RabbitMQ設計原理解析》裡詳細介紹過,這裡再講一遍。

 

MQ的主要作用有三個:

 

1、非同步處理

 

示例一:在《架構師三大難-領域劃分問題》的示例三(非同步處理模式)裡,我用退款做示例講了MQ用作非同步處理的場景。

 

示例二:還有一個典型的MQ的非同步處理場景是日誌採集。我所知道的公司,日誌集中採集用的都是kafka。業務開發人員只需要專注自己的業務邏輯,將日誌列印到磁碟上,kafka會非同步的採集到日誌伺服器。

 

示例三:分散式事務中有一種常用的一致性解決方案:非同步確保型解決方案。這個常用的就是基於MQ來實現。在《服務設計要解決的問題》裡有這種場景的說明。

 

2、應用解耦

 

示例一:我有很多文章都是建立在應用解耦的基礎上:《Spring Kafka的非同步Bug》《一個反直覺的sql》

背景是MQ的一端和另一端分別屬於兩個公司。

 

示例二:我在寫文章過程中,意識到自己遇到的場景可能和大家自己工作中的認知有一定距離,所以我寫了尤娜系列。事實上,由於自己寫文章時,都會對文章的論點進行驗證,所以尤娜是我幾年前開源的一個專案名

https://github.com/xiexiaojing/yuna

【程式設計一生】公眾號的文章程式碼片段很多都能在上面找到。

 

《尤娜系統的第一次飛行中換引擎的架構垂直拆分改造》這篇文章就以故事的形式展示了使用MQ做應用拆分的業務背景及整個過程。由於咱們使用者群(可加我微信 brmayi 註明:入群)裡反饋文章中沒有明確使用的拆分方法論,我補充了方法論篇:《四種常用的微服務架構拆分方式》

 

3、流量削峰

 

示例一:在《從前,有一個簡單的通道系統叫尤娜……》這篇文章中,尤娜系統遇到的就是需要進行請求的削峰填谷。流量削峰我在《四種快取的避坑總結》裡有明確寫道這是穩定性保障的一個重要舉措,尤娜文章中大家也應該能感受到吧!

 

How層:應用級別

 

How層:應用級別,知道怎麼用MQ來實現功能。《應用角度看kafka的術語和功能》這篇文章裡介紹了要達到這一層級所需的知識點。

 

這一層其實在網上能找到的資料最多,實際上就像開頭黃金圈的圖裡畫的:也最淺。想在簡歷上“掌握”,還要進入下一層。

 

Why層:掌握級別

 

Why層:掌握級別,理解原理,遇到問題可以深入剖析到本質。想達到這一層,需要很多相關領域的知識。只要面試者水平不是太差,一般面試官都會問到這一層,以達到了解面試者綜合能力的目的。

 

示例一:《Kafka生產端實際專案中的使用分析》裡提到了給kafka加代理和使用加密kafka的問題。

 

示例二:《架構視角-檔案的通用儲存原理》裡把Kafka、Redis、關係型資料庫、搜尋引擎的儲存拿出來對比,探討了儲存原理的本質問題。

 

示例三:《穩定性五件套-限流的原理和實現》從演算法層面來探討底層原理。

 

示例四:《避免線上故障的10條建議》裡討論了使用MQ的風險和規避措施。

 

示例四:《實戰併發-使用分散式快取和有限狀態機》《Spring Kafka的非同步Bug》裡說明了Kafka自身的設計問題和缺陷,以及怎麼規避。

 

示例五:《深入理解MQ生產端的底層通訊過程-理解channel》深入底層通訊,深層理解MQ的本質。MQ本質上是解決通訊的問題。《服務設計要解決的問題》裡提到,技術本質上都解決三個問題:分散式、通訊和儲存。想深入理解MQ,建議從《白話TCP/IP原理》開始理解通訊。

 

總結

 

咱們使用者群(可加我微信 brmayi 註明:入群)裡討論的問題,我喜歡看不發表評論。在大家的討論中,我其實可以收集很多的問題和大家的關注點。一兩句話太淺,我通常會寫文章來集中回答大家可能遇到的問題。


本篇也是咱們使用者朋友的提醒:“觀察到知識點是承上啟下的,是否可以搞一個目錄,當連載小說看”。我隔一段時間會做一期《歷史文章分類彙總》,但是這種分類的方法,文章之間的邏輯關係並不強。正好這篇文章可以順便介紹一下知識地圖這種邏輯關係,作為方法論的介紹。

 

最後解釋一下黃金圈法則:

 

西蒙·斯涅克在他的《從“為什麼”開始》一書中提出了“黃金圈法則”的概念。他發現,人們一般向別人表達或者激勵時,常規路徑是:先現象,而後措施,最後是結果,這種路徑收效甚微。而真正能動人心的路徑應該是:先理念,而後措施,再到現象,最後是結果。

 

有朋友大概聽過這個名言:people don't buy what you do,they buy why you do it。大意是:人們買的不是你的產品而是你的理念。理念才是核心。掌握一個知識技能也是一樣,只有掌握到Why這個層次,才能形成核心競爭力。

 


 

因為公眾號平臺更改了推送規則,如果不想錯過內容,記得讀完點一下“在看”,加個“星標”,這樣每次新文章推送才會第一時間出現在你的訂閱列表裡。

 

PDCA方法論,檢查自己是否錯過更新:每週三晚上8點左右,我都會更新文章,如果你沒有收到,記得點開【程式設計一生】公眾號找一下(*^▽^*)