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