如果把 4 個消息隊列都拉到一個群里,他們會聊些什麼?

本篇的靈感來自我超級喜歡的一篇文章:《如果把中國 442 位皇帝都放在一個群裏面,他們會聊些什麼》。

其實我的第一篇文章就是用這種方式寫的《悟空聊無事務》,這也是我的公眾號名字的來源,叫做:「悟空聊架構」

本篇也會以 「群聊、單聊、朋友圈」 的方式來講解計算機世界中消息隊列的一些奇聞趣事。

從事軟件開發的同學,一定都聽過或用過消息隊列,比如 RabbitMQ,Kafka。消息隊列簡單來說就是生產者將很多消息放到一個隊列結構中,由其他消費者來消費。想了解更多隊列的知識,看下我之前寫的 18 個 Queue 的文章,保證整的明明白白。傳送門:45張圖庖丁解牛18種Queue。

那如果把常見的四大消息隊列拉到一個群里,會碰出哪些火花呢?

被嫌棄

四大隊列被中間件大隊長拉到了一個群裏面。

群名:悟空聊架構群。

成員數:25 個。

管理員:中間件大隊長。

群主:神秘悟空哥。

大家來感受下他們的聊天界面吧~

👇👇👇

群聊畫面 1

RabbitMQ 單獨找中間件大隊長聊天的畫面。

單聊畫面 1

涉及的故事:

  • Erlang 是啥?
    • 並非一門新語言,出現於 1987 年。並不是面向對象語言。
    • 函數式編程,基於進程並發,高並發、分佈式是它的優勢。
    • 由愛立信製造商專門為通信應用設計,在國內主要是遊戲領域用到。
  • Erlang 為啥會被其他隊列嫌棄?
    • 因為 RocketMQ、ActiveMQ 都是用 Java 實現的,Kafka 是用 Scale 和 Java 實現的,這三種消息隊列從語言實現上都有些類似。
    • 在國內現如今超流行的 Java 的技術生態中,懂 Java 又懂 Erlang 的就比較少了,願意花時間和精力在 Erlang 上面的就更少了。

快和慢

群聊畫面 2

涉及的故事:

  • 他們討論的低延遲是啥?
    • 就是說這個消息隊列的響應速度是非常快的,比如插入一條消息,可以很快的返回插入結果。可以理解為反射弧比較短。而RabbitMQ 的低延遲達到微秒級,而另外三個隊列都是毫秒級。
  • 他們討論的吞吐量是啥?
    • 吞吐量:系統在單位時間內處理請求的數量。
    • RocketMQ 自稱火箭,肯定是有他的道理的,因為他的處理請求的速度快呀!吞吐量可以達到 10 萬級,而另外三個隊列都是萬級。

無界面 vs 社區別涼

群聊畫面 3

他們聊的操作界面又是啥?

  • RabbitMQ、ActiveMQ、Kafka 都是有界面來操作隊列或消息的,而 RocketMQ 就比較坑了, 只提供了命令行工具,這對於長期使用 windows 的用戶確實很難受呀。

他們說的阿里出品又是啥?

  • RocketMQ 由大廠阿里出品,已捐給 Apache 開源社區,活躍度不算高,會不會沒人修 bug 了?
  • RabbitMQ 有活躍的開源社區,總能找到修 bug 的,你願意用哪個?大廠推薦用 RocketMQ,可以自己折騰,小一點的還是用 RabbitMQ 吧,節省解決問題的成本。

mysql 的朋友圈

群聊畫面 4

點開圖片後查看大圖,mysql 不會飛 的朋友圈如下:

mysql 的朋友圈

中間件大隊長mysql 不會飛進入了群聊。

mysql 不會飛進入了群聊

涉及的故事:

消息隊列常用在解耦、削峰、異步場景中。先對這幾個點來個大白話掃盲:

  • 悟空大白話削峰:關鍵詞:別都丟給我! 比如雙十一期間超多用戶下單,假如 10萬個請求都到數據庫了,數據庫一下子是扛不住這麼多請求的,那麼消息隊列來解圍,把請求丟到消息隊列,訂單服務從消息隊列拿消息處理訂單請求,起到了一個緩衝的作用,這樣對數據庫的壓力就小多了。

  • 悟空大白話解耦:關鍵詞:誰用誰拿 。A 系統需要將數據傳給 B、C、D、E 系統,A 系統時刻需要考慮 B、C、D、E 四個系統如果宕機了怎麼辦?要不要重發,要不要消息持久化存起來?A 系統要考慮的問題太多了,可把 A 系統累壞了。這就是一種高耦合的現象,BCDE 四個系統強依賴 A 系統。那怎麼解耦?A 系統將數據丟到消息隊列,BCDE 系統自己想要數據的時候就去消息隊列裏面拿。

  • 悟空大白話異步:關鍵詞:先去忙你的吧~ 。比如下一筆訂單,從訂單支付到訂單成功,這個閉環可能很長,比如要發送訂單成功消息、贈送優惠券等等操作,用戶等待的時間可能很久,用戶體驗就不好了,那怎麼解決呢?可以將下單成功的消息丟到隊列裏面,快速返回訂單成功,然後告知用戶,後系消息觸達系統再從隊列裏面拿到訂單數據,依次給用戶發送訂單消息和優惠券就行了,這個就是異步。

消息隊列的尷尬

消息隊列的尷尬

四大消息隊列都去看這篇文章去了,聽說這篇文章被各大號主轉載了 19 次。傳送門:這三年被分佈式坑慘了,曝光十大坑

彩蛋

mysql不會飛 用到了周杰倫的歌曲:《超人不會飛》

Nigix陽光男孩 用到了周杰倫的歌曲:《陽光男孩》

拍一拍獲得了棒棒糖,來自於讀者我是一顆糖波波的微信昵稱。

該架構聊天群成員數已經 26 個啦,成員有消息隊列、各大數據庫、分佈式中間件,想進群來看一看他們的聊天嗎?「在群里不說話都能進步哦~」 加我微信 PassJava 備註[加群]

寫在最後

你猜我用了幾個手機來做聊天截圖?

你好,我是悟空哥「7年項目開發經驗,全棧工程師,開發組長,超喜歡圖解編程底層原理」
我還手寫了 2 個小程序Java 刷題小程序PMP 刷題小程序,點擊我的公眾號菜單打開!
另外有 111 本架構師資料以及 1000 道 Java 面試題,都整理成了PDF。
可以關注公眾號 「悟空聊架構」 回復 悟空 領取優質資料。

「轉發->在看->點贊->收藏->評論!!!」 是對我最大的支持!

我是悟空哥,努力變強,變身超級賽亞人!我們下期見!
在這裡插入圖片描述