一、先分清:兩家店 “主打啥”(定位)

店類型

對應 MQ

主打能力(一句話)

像生活裏的啥?

快遞分揀站

Kafka

只拼 “快” 和 “多”,不管複雜服務

雙 11 快遞倉:一天分 10 萬件,不幫改地址

社區便利店

RocketMQ

啥都管 “全”,服務靈活

樓下小超市:能留貨、能退差、能幫存東西

二、再懂:核心功能 “咋實現”(對應技術點)

要乾的事

快遞分揀站(Kafka)怎麼幹?

社區便利店(RocketMQ)怎麼幹?

1. 分貨(數據分片)

劃 10 條 “固定通道”(Partition),北京走 1 號、上海走 2 號,貨只往後堆,不改方向

擺多個 “貨架”(Queue),牛奶放 A 架、麪包放 B 架,能隨時調整貨架位置

2. 保證貨不丟(高可用)

每條通道配 2 個分揀員(ISR):A 分貨、B 盯着同步,A 請假了 B 頂上

僱 3 個前台(NameServer):顧客問貨在哪,前台隨時指,一個請假還有倆

3. 處理特殊需求

不接!改地址、先驗貨都不行(犧牲靈活換速度)

全接!- 留貨:先貼 “預定標籤”(事務消息),付錢再拿- 存東西:按 “整點格子” 存(延時隊列),到點提醒- 退貨:壞零食放 “暫存架”(DLQ),不扔回貨架

4. 人多了咋分工(並行)

加分揀員就重新分通道(Rebalance),分的時候暫停一會兒

加店員就重新分貨架(Queue 分配),不暫停,能邊賣邊調

三、再選:你的需求 “該找誰”(場景匹配)

你的需求

選哪家?

理由(一句話)

1. 發 10 萬條日誌 / 埋點數據

分揀站(Kafka)

快!一天能扛 100 萬條,晚幾分鐘沒關係

2. 訂蛋糕:先留貨、下班付錢

便利店(RocketMQ)

能 “貼預定標籤”(事務消息),不怕被別人買走

3. 訂單超時:30 分鐘後取消

便利店(RocketMQ)

能放 “30 分鐘後取” 格子(延時隊列),不用盯着表

4. 發簡單通知(如日誌提醒)

隨便選

無複雜需求,看你熟悉哪家

四、最後記:避坑 “要注意啥”(關鍵提醒)

店類型

對應 MQ

最容易踩的坑(一句話)

怎麼躲坑?

快遞分揀站

Kafka

中途加通道(Partition)會暫停分貨

提前規劃好通道數,別臨時加

快遞分揀站

Kafka

分揀員全請假(ISR 只剩 1 個)會丟貨

保證至少 2 個分揀員在崗(監控 ISR)

社區便利店

RocketMQ

前台只僱 1 個(NameServer 單點)會沒人指路

至少僱 3 個前台(部署 3 個 NameServer)

社區便利店

RocketMQ

存東西不能改時間(延時消息改不了)

存之前確認好時間,改時間就重新存

五、總結:3 秒記完 “選店口訣”

  • 要 “多、快、簡”(日誌、埋點、大數據)→ 找快遞分揀站(Kafka);
  • 要 “全、靈、穩”(訂單、留貨、定時任務)→ 找社區便利店(RocketMQ)。