如果把 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。
可以關注公衆號 「悟空聊架構」 回覆 悟空 領取優質資料。

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章