一、先分清:兩家店 “主打啥”(定位)
|
店類型
|
對應 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)。