首页
/
每日頭條
/
圖文
/
消息隊列簡介
消息隊列簡介
更新时间:2025-12-04 05:39:04

提到消息隊列,大家一定不陌生,無論是在校、面試還是工作,我們涉及得都很多。

有需求就有供應,市面上消息隊列當然非常多,算得上主流的也有5、6個,而大家可能由于對某一種隊列比較熟悉,就一直用它,大概就是亞瑟打野、亞瑟上路、亞瑟中路、亞瑟輔助。

消息隊列簡介(消息隊列這麼多)1

但你有思考過嗎引入的隊列是否是最合适的嗎?

它與其它隊列相比有什麼優勢嗎?

可以說,選型是開發工作中最重要,也是最體現能力的一環。今天牛牛就來給大家介紹下消息隊列如何抉擇。

消息隊列是什麼?

消息隊列,顧名思義就是傳遞消息的隊列,有着先入先出的特性,既然是隊列,自然遵循先入先出的原則,同時,消息隊列具備可靠性、高性能等特點。

消息隊列是大型分布式系統不可缺少的中間件,一般用于異步流程、消息分發、流量削鋒等問題,可以通過消息隊列實現高性能、高可用、高擴展的架構。

業界比較出名的消息隊列有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、MetaMQ、RocketMQ。

那大家就會問了,這麼多消息隊列,我選誰好呢?

别急,我們先來深入理一理消息隊列的應用場景,以及每個隊列的特色,知道這些信息,才好做出決策。

消息隊列的應用場景

  1. 異步

如果一個接口,處理時間很長,而且不能通過水平擴容來解決,就需要異步,那麼,什麼情況下不能通過水平擴容解決呢?

有很多,比如視頻處理,涉及到視頻下載,那受限于網絡帶寬等因素,擴容無用;比如區塊鍊這種共識場景,隻有單機才能出塊,擴容也沒有用;還有更常見的,比如一個業務流程,過了10多個微服務,單個也許不長,加起來就很難接受。

以上的情況下,用戶很難通過同步接口長時間等待結果,那就應該做成異步,先扔進消息隊列,後續再進行消費,響應時間可以從10s,降低到10ms。

消息隊列簡介(消息隊列這麼多)2

2.消息分發

假設一個核心服務A,是用來發布某種信号的,發布之後,需要通知到下遊服務B、C,這種模式在隻有B、C兩兄弟的時候,沒啥問題。

但随着業務需要,可能會有D、E、F等更多的打工人出現,這時候A服務就需要更改代碼,将消息也傳遞給這些新加入的兄弟,每次增加打工人,就需要更改一次代碼。

消息隊列簡介(消息隊列這麼多)3

而引入消息隊列,則可以解決這個問題,實現能力複用,業務解耦。

消息隊列簡介(消息隊列這麼多)4

3.削峰

業務有個概念叫峰值流量,也就說流量在一段時間遠大于平時,從視圖上看就像一個山峰。比如天貓雙十一秒殺日,特别是0點的時候,流量起碼是平常的千倍以上,如果不做好處理,一波就能徹底将服務打死。

消息隊列簡介(消息隊列這麼多)5

如果常備1000倍流量的設備,那是極大的成本浪費,如果臨時調配,進行服務擴容,很多時候又不如想象得簡單。

之前有和Shopee的同學聊過,一到活動日他們就得緊鑼密鼓去做擴容,擴容之後還得熬更守夜地做壓測,不光勞命傷财、還容易出事故。

消息隊列可以優雅地解決這個問題,将雙十一的請求扔入消息隊列,等待後續服務慢慢處理,如下圖所示。

消息隊列簡介(消息隊列這麼多)6

其實在架構上,削峰和上面的異步場景是相同的架構,都是将請求扔入隊列中,再慢慢消費。

但要注意異步場景是單個請求,本身處理時間很長。削峰針對是單個請求ok,但是流量突發的場景。

消息隊列能力對比

上面有提到幾個知名的消息隊列,其中ZeroMQ太過輕量,主要用于學習,實際是不會應用到生産,我們就Kafka、ActiveMQ、RabbitMQ、RocketMQ來進行不同維度對比。

特性

ActiveMQ

RabbitMQ

RocketMQ

Kafka

單機吞吐量

萬級

萬級

10 萬級

10 萬級

時效性

毫秒級

微秒級

毫秒級

毫秒級

可用性

高(主從)

高(主從)

非常高(分布式)

非常高(分布式)

消息重複

至少一次

至少一次

至少一次

最多一次

至少一次

最多一次

消息順序性

有序

有序

有序

分區有序

支持主題數

千級

百萬級

千級

百級,多了性能嚴重下滑

消息回溯

不支持

不支持

支持(按時間回溯)

支持(按offset回溯)

管理界面

普通

普通

完善

普通

消息隊列選型

選型的時候,我們需要根據業務場景,結合上述特性來進行選型。

比如你要支持天貓雙十一類超大型的秒殺活動,這種一錘子買賣,那管理界面、消息回溯啥的不重要。

我們需要看什麼?看吞吐量!

所以優先選Kafka和RocketMQ這種更高吞吐的。

比如做一個公司的中台,對外提供能力,那可能會有很多主題接入,這時候主題個數又是很重要的考量,像Kafka這樣百級的,就不太符合要求,可以根據情況考慮千級的RocketMQ,甚至百萬級的RabbitMQ。

又比如是一個金融類業務,那麼重點考慮的就是穩定性、安全性,分布式部署的Kafka和Rocket就更有優勢。

特别說一下時效性,RabbitMQ以微秒的時效作為招牌,但實際上毫秒和微秒,在絕大多數情況下,都沒有感知的區别,加上網絡帶來的波動,這一點在生産過程中,反而不會作為重要的考量。

其它的特性,如消息确認、消息回溯,也經常作為考量的場景,管理界面的話試公司而定了,反正牛牛呆過的地方,都不看重這個,畢竟都有自己的運維體系。

最後

本次,牛牛給大家分享了消息隊列是什麼、解決什麼問題、每種隊列的特性,以及怎麼結合場景和特性做分析。

面試時可以針對每個場景的不同因地制宜選取隊列,這樣不僅可以展現知識的全面性還可以體現出自己分析問題的能力。

而在實際的工作中,我們需要考慮的則更多,比如團隊的技術棧、經濟成本等情況進行綜合分析。隻有熟悉每個消息隊列的優劣,才能好中取優,選出适合的方案。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
貝加爾湖畔音樂介紹(怎樣評價貝加爾湖畔這首歌)
貝加爾湖畔音樂介紹(怎樣評價貝加爾湖畔這首歌)
  初聽不識曲中意,再聽已是曲中人。或許是因為一段曾以為會很長久很長久的感情忽然終止,聽一些對舊事和感情回憶的歌曲都能讓我不受控制的把自己帶入。如果年少的自己不那麼計較,多一些體諒,或許的或許,會有不一樣的結局呢,或許的或許,不會錯過呢,青蔥的我,單純的你。以前還沒分手的時候,我隻是覺得這首歌的旋律好聽,還以為是寫貝加爾湖的甯靜美麗呢。現在才懂,那是對美好的...
2025-12-04
香港雙胞胎組合aoa(24小時AOA
香港雙胞胎組合aoa(24小時AOA
  AOA出席2018平昌冬季殘奧會成功舉辦祈願慶祝活動               5日據消息,OHMY GIRL正在以4月份回歸為目标準備新專中。OH MY GIRL憑借着1月份發布的歌曲《秘密庭院》被大家稱為“妖精豆”,備受喜愛。本次OHMY GIRL将時隔3個月發布新專,減少空白期,愉快地與粉絲們進行溝通。據悉新專中OH MYGIRL将以全新的概念展...
2025-12-04
秋葉原之旅最新預告(秋葉原之旅Festa發布會)
秋葉原之旅最新預告(秋葉原之旅Festa發布會)
  秋葉原作為日本的旅遊勝地而被大家所熟知,但是在繁華景象的背後卻隐藏着一些不為人知的秘密。《秋葉原之旅》是一款以秋葉原為舞台的動作冒險遊戲,講述了主角和被稱為“陰妖子”的吸血鬼展開鬥争的故事。   遊戲中出現了許多的真實場景,讓玩家可以領略到動作遊戲不一樣的緊張感。   而近日遊戲開發商DMM在位于秋葉原的“挖掘!寫真偶像文化祭”咖啡廳舉辦了《秋葉原之旅F...
2025-12-04
電視藝術片與紀錄片的不同(傳統工藝植入偶像劇)
電視藝術片與紀錄片的不同(傳統工藝植入偶像劇)
     《隻為遇見你》劇照。   最近開播的電視劇《隻為遇見你》中,少不了走偶像劇路線的甜蜜愛情,但其對傳統工藝與匠人精神的展現引人關注,不僅科普了不少珠寶行業的傳統技藝,頗有新意的是,主創甚至還将推出一部紀錄片作為劇集的“衍生品”。   懷揣匠人之心,打碎花瓶還可以做成首飾?   該劇講述了年輕一代守護中國傳統民營珠寶企業,在競争中頑強生存、謀求革新的故...
2025-12-04
婦女兒童服務陣地建設的重要性(開篇之勢展新姿)
婦女兒童服務陣地建設的重要性(開篇之勢展新姿)
  德陽市婦女兒童服務中心遷入新址後,終于迎來了開班的日子,德陽婦女兒童終于又有了自己專屬的高品質活動場所!前期,在德陽市婦聯的關心指導下,線上線下聯動宣傳,并面向全社會婦女、兒童招生。經過曆時一個多月的報名、選拔、錄取,9月初,新中心迎來了落成以來的第一批學員,共計309名。   這個秋期,中心招錄成立了開心麻花兒童劇團、德慧舞蹈藝術團、童慧舞蹈藝術團、童...
2025-12-04
Copyright 2023-2025 - www.tftnews.com All Rights Reserved