如果把四個消息隊列都拉到一個羣裏,他們會聊些什麼?

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

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

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

從事軟件開發的同學,一定都聽過或用過消息隊列,比如 RabbitMQ,Kafka。消息隊列簡單來說就是生產者將很多消息放到一個隊列結構中,由其他消費者來消費。想了解更多隊列的知識,看下我之前寫的 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 次。

我知道你在看