精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

阿里面試:在高并發場景下,如何保證消息只被消費一次?實際開發踩過坑嘛?

開發 架構
如果我們使用了消息隊列,消息重復消費問題,堪稱高并發系統的隱形殺手!那么,如何確保每條消息精準處理一次呢,為我們的業務系統保駕護航呢?

前言 

大家好,我是撿田螺的小男孩~

最近一位伙伴去阿里面試,問了這么一道題:高并發場景下,如何保證消息只被消費一次。要求全鏈路分析,并且給出對應的處理方案。

本文田螺哥跟大家一起會會它~

圖片圖片

1.業務場景 

我們日常開發中,如果用到消息隊列,就需要避免消費重復的問題。比如:

  • 用戶參與營銷活動領取優惠券,因消息重復消費,同一用戶收到多張相同優惠券
  • 用戶支付成功,因消息重復消費,收到兩條扣款通知
  • 用戶下單后,系統因消息重復消費,觸發多次發貨流程,導致用戶收到多個相同包裹

其實類似的業務場景比比皆是。如果我們使用了消息隊列,消息重復消費問題,堪稱高并發系統的隱形殺手!那么,如何確保每條消息精準處理一次呢,為我們的業務系統保駕護航呢?

2. 消息重復消費的原因 

消息重復消費,常見有這些原因:

  • 生產者發送后,因為網絡抖動,沒收到ACK,觸發自動重試,導致消息重復發送。
  • Broker主節點宕機,未同步到從節點的消息在新主節點恢復后被重新投遞
  • 消費者處理消息成功,但提交Offset時崩潰或網絡異常,重啟后重新拉取舊消息
  • 消費者處理消息耗時過長,Broker判定其離線并觸發Rebalance,消息被分配給其他消費者重復處理。

3. 全鏈路層層防御,保證不被重復消費 

一個消息從生產者產生,到被消費者消費,主要經過這3個過程:

圖片圖片

因此,我們可以通過這三層,實現層層防御,保證不被重復消費。

3.1 生產端防重

  • 冪等性發送

Kafka、Pulsar等支持冪等性的消息隊列。

通過唯一標識(如 ProducerID + 序列號)過濾重復消息。

比如kafka

Properties props = new Properties();
props.put("enable.idempotence", "true");  // 開啟冪等性
props.put("acks", "all");                 // 所有副本確認
KafkaProducer producer = new KafkaProducer<>(props);
  • 事務消息

利用消息隊列的事務消息,要么全成功,要么全回滾。

發送 Half Message(預消息,對消費者不可見)。
執行本地事務(如更新訂單狀態)。
根據事務結果提交或回滾消息。

3.2 Broker:去重,且保證消息穩定投遞

  • 消息攜帶唯一ID,去重

生產者攜帶業務主鍵(如訂單ID),類似快遞單號醬紫,然后(比如RocketMQ)Broker端根據Message Key去重。

  • 持久化與順序性

Kafka:設置 acks=all,確保消息寫入所有副本。

RocketMQ:同步刷盤(flushDiskType=SYNC_FLUSH)

分區有序性:同一業務ID的消息固定發往同一分區

主從同步:使用 Raft 協議(如 RocketMQ DLedger)或 ISR 機制(Kafka)

3.3 消費端:業務冪等 

  • 業務冪等性設計

數據庫唯一約束:(訂單創建時,防止重復插入同一訂單。)

-- 插入訂單時,若order_id重復會直接報錯  
INSERT INTO orders (order_id, user_id, amount, status)  
VALUES ('20231001123456', 1001, 99.99, 'UNPAID');

樂觀鎖: 賬戶余額扣減,防止重復扣款

-- 扣減余額時,校驗版本號  
UPDATE account  
SET balance = balance - 100,  
    version = version + 1  
WHERE user_id = 123  
  AND version = 5;  -- 當前版本號為5時才更新

狀態機校驗:(訂單狀態流轉(未支付 → 已支付),防止重復支付)

-- 支付成功時,僅允許從UNPAID狀態轉為PAID  
UPDATE orders  
SET status = 'PAID'  
WHERE order_id = '20231001123456'  
  AND status = 'UNPAID';  -- 僅當狀態是UNPAID時才更新

redis分布式鎖:消費前加鎖,確保同一消息僅被一個消費者處理。

// Redisson分布式鎖示例
RLock lock = redisson.getLock("MSG_LOCK:" + messageId);
if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {
    try {
        if (isProcessed(messageId)) { // 二次檢查
            return;
        }
        process(message);
        markAsProcessed(messageId); // 標記已處理
    } finally {
        lock.unlock();
    }
}
  • 去重表

在數據庫中維護message_id表,消費前查詢是否已處理。

圖片圖片

4.兜底方案,監控+對賬 

其實很難保證百分百不出現消息重復消費,就好像很難保證程序員百分百保證代碼沒bug。

因此,我們可以再加個兜底方案,就是監控+對賬。

比如,主要監控一下這些指標:

  • 生產者重復發送率
  • 消費者重復處理告警
  • Offset提交延遲

然后我們再加個對賬任務:

定期比對消息數量與業務數據量(如訂單表總數 vs 消息消費總數)。

當發現有問題時,告警通知,然后去修復它(如補償退款、庫存回滾)

5.為什么不用Exactly-Once呢? 

有些伙伴有一位,避免重復消費的話,為啥不用Exactly-Once呢?

它是RocketMQ的消費模式,確保每條消息只被處理一次,既不丟失也不重復

其實主要還是性能和復雜性的考慮吧。其實,絕大多數場景用At-Least-Once + 冪等更劃算!

最后 

其實日常開發中,保證消息不被重復消費,主要還是做好消費端的冪等設計就好啦。但是如果涉及到面試的時候,還是按照本文的思路來。就是面試的時候,讓面試官看到的你的思考過程和邏輯辯證的過程。

責任編輯:武曉燕 來源: 撿田螺的小男孩
相關推薦

2025-09-18 08:53:20

2025-09-22 08:26:37

2020-03-12 09:34:05

Redis數據技術

2020-10-14 15:53:45

秒殺秒殺系統流量

2024-12-18 07:43:49

2025-11-20 08:49:23

2022-01-07 11:48:59

RabbitMQGolang 項目

2024-04-01 08:05:27

Go開發Java

2019-04-18 14:06:35

MySQL分庫分表數據庫

2020-07-08 07:44:35

面試阿里加班

2020-10-15 06:26:24

高并發場景冰河

2018-09-11 09:14:52

面試公司缺點

2021-01-22 05:35:19

Lvm模塊Multipath

2025-07-01 07:21:15

2025-02-26 03:00:00

2025-02-28 00:03:22

高并發TPS系統

2019-10-30 14:44:41

Prometheus開源監控系統

2022-09-16 08:42:23

JavaAPI變量

2017-07-17 15:46:20

Oracle并行機制

2019-05-28 11:49:09

點贊
收藏

51CTO技術棧公眾號

亚洲高清av一区二区三区| 五月天综合网| 国产精品suv一区二区| 偷窥自拍亚洲色图精选| 欧洲日韩一区二区三区| 中文网丁香综合网| 天堂在线资源库| 日韩精彩视频在线观看| 欧美成人在线免费视频| 国内精品久久99人妻无码| 久久久久黄色| 欧美视频在线观看免费| 色爽爽爽爽爽爽爽爽| 香蕉视频黄色片| 精品亚洲成a人| 5278欧美一区二区三区| 在线观看美女av| 女厕嘘嘘一区二区在线播放 | 亚洲理论电影在线观看| 国产www.大片在线| 成人性生交大片免费| 国产精品揄拍500视频| 一区二区三区视频免费看| 99精品电影| 国产亚洲欧美另类中文| 尤物网站在线观看| 成人精品在线| 在线观看91精品国产入口| 成年女人18级毛片毛片免费 | 中文一区在线播放| 久精品国产欧美| 精品人妻一区二区三区浪潮在线| 日韩精品亚洲一区二区三区免费| 性色av一区二区三区免费| 97在线观看免费高| 欧洲福利电影| 精品一区二区三区四区在线| 国产精品成人免费一区久久羞羞| 国产精品国产三级在线观看| 99精品国产一区二区三区2021| 欧美成人首页| 综合激情国产一区| 国产高清一区二区三区四区| 啪啪激情综合网| 精品人伦一区二区色婷婷| 99精品视频国产| 日本欧美在线| 欧美日韩国产一二三| 天天干在线影院| 亚洲wwww| 欧美综合视频在线观看| 日本熟妇人妻中出| 日韩免费va| 色婷婷亚洲综合| 亚洲成熟丰满熟妇高潮xxxxx| 后进极品白嫩翘臀在线播放| 亚洲一区免费观看| 9色porny| 黄色软件视频在线观看| 欧美视频不卡中文| 欧美综合在线观看视频| 亚洲优女在线| 欧美性开放视频| 亚洲熟妇av一区二区三区| 韩国主播福利视频一区二区三区| 欧美日韩中文字幕在线视频| 国产乱子夫妻xx黑人xyx真爽 | 一区二区三区在线观看欧美| 女人床在线观看| 国产精品国精产品一二| 亚洲成年人影院| 欧美女人性生活视频| 欧美专区福利免费| 欧美在线短视频| 亚洲图色中文字幕| 一区二区在线免费播放| 欧美精品一区二区三区高清aⅴ | 日韩无套无码精品| 黄色成人小视频| 欧美一区二区三区四区高清| 免费观看一区二区三区| 婷婷精品在线| 在线看日韩av| 精品99久久久久成人网站免费| 亚洲欧洲另类| 国产精品欧美亚洲777777| 国产又粗又猛又色又| 国产精品18久久久久久久久久久久| 高清国产在线一区| 精华区一区二区三区| 中文字幕一区二区在线观看| 日韩极品视频在线观看| 成人看片网站| 日韩视频123| 自拍偷拍中文字幕| 夜间精品视频| 奇米影视亚洲狠狠色| 91在线观看喷潮| 成人小视频在线观看| 日韩欧美视频一区二区| 日本片在线看| 欧美性大战久久| 91丨porny丨对白| 欧美自拍偷拍| 98精品国产自产在线观看| 中文字幕你懂的| 99精品视频在线观看| 影音先锋亚洲视频| 在线最新版中文在线| 欧美一级久久久| 久久久久久久毛片| 精品91久久久久| 国产精品色视频| 熟妇人妻一区二区三区四区| 最新久久zyz资源站| 那种视频在线观看| 日韩高清一区| xxxxx91麻豆| 五月婷婷激情视频| 高清国产一区二区| 中文字幕一区二区三区最新| 在线中文字幕播放| 亚洲成人精品久久久| 二区三区四区视频| 日韩中文字幕不卡| 久久精品一区二区三区不卡免费视频| 黄网站app在线观看| 欧洲精品在线观看| 国产熟女高潮一区二区三区 | 国产日韩影视精品| 成 年 人 黄 色 大 片大 全| 欧美成人精品午夜一区二区| 中文字幕欧美日韩va免费视频| 国产91精品一区| 粉嫩嫩av羞羞动漫久久久| 亚洲综合首页| 国产91在线精品| 亚洲午夜未删减在线观看 | 久久精品卡一| 国产精品免费在线播放| www红色一片_亚洲成a人片在线观看_| 欧美偷拍一区二区| 久久美女免费视频| 久久国产一二区| 欧美高清一区二区| 2022成人影院| 亚洲老板91色精品久久| 国产免费av一区二区| av一区二区三区在线| 免费在线观看视频a| gogo人体一区| 久久久影视精品| 人人妻人人玩人人澡人人爽| 亚洲成在人线在线播放| 国产高清成人久久| 99国产精品久久久久久久成人热| 国产精品成人观看视频免费| 川上优av中文字幕一区二区| 日韩成人在线观看| 国产精品suv一区| 日本一二三四高清不卡| 五月婷婷丁香综合网| 天天影视综合| 亚洲字幕在线观看| 超免费在线视频| 日韩精品视频在线观看网址| 无码人妻精品一区二区50| 国产欧美中文在线| 中文字幕 91| 自拍偷拍欧美| 精品国产一区二区三区免费 | 中文字幕日本在线观看| 欧美日韩大陆一区二区| 可以直接看的黄色网址| 成人午夜伦理影院| 日本精品www| 99久久亚洲精品蜜臀| 99re资源| 午夜激情在线播放| 伊人青青综合网站| www.成人免费视频| 黑人巨大精品欧美一区二区三区| 免费看91的网站| 国产麻豆精品视频| 亚洲熟妇国产熟妇肥婆| 欧洲激情视频| 国产精华一区| 国产成人毛片| 97国产精品视频| 成人精品一区二区三区免费| 欧美一卡二卡在线观看| 天天操天天操天天操天天| 国产精品美女久久久久aⅴ| 毛片毛片毛片毛片毛| 国产视频亚洲| 法国空姐在线观看免费| 任我爽精品视频在线播放| 国产日产久久高清欧美一区| 牛牛在线精品视频| 在线视频一区二区| 欧美一区,二区| 欧美日韩一级视频| 日韩精品一区二区av| 国产精品第一页第二页第三页| 国产清纯白嫩初高中在线观看性色| 免费观看在线综合色| 成人免费观看cn| 91tv官网精品成人亚洲| 欧美日韩国产综合在线| 国产精品18hdxxxⅹ在线| 国产噜噜噜噜噜久久久久久久久| 2021中文字幕在线| 久久久国产精品亚洲一区| 亚洲人成色777777精品音频| 制服视频三区第一页精品| 永久免费无码av网站在线观看| 亚洲一区二区三区影院| 99精品中文字幕| 久久久久久久综合| 无码任你躁久久久久久老妇| 精品一区二区日韩| wwwwww.色| 香蕉久久国产| 青青青免费在线| 欧美日韩三级| 手机在线视频你懂的| 日韩欧美网址| 日韩国产精品一区二区| 人人香蕉久久| 国产九色精品| 亚洲综合影院| 91久久精品国产| 日韩久久一区| 91精品国产综合久久香蕉最新版| 日韩欧美少妇| 国产精品扒开腿做| 国产精品粉嫩| 国产91色在线免费| 中日韩脚交footjobhd| 欧美亚洲国产精品| 国模私拍一区二区国模曼安| 性色av一区二区三区免费| 9999在线视频| 午夜精品一区二区三区在线视| 日本色护士高潮视频在线观看 | 国产一区二区免费看| 免费看涩涩视频| 久久国产夜色精品鲁鲁99| 中文av一区二区三区| 蜜桃av一区二区| 香港日本韩国三级网站| 精品亚洲国产成人av制服丝袜| 女同激情久久av久久| 精品午夜久久福利影院| 欧美成人三级在线播放| 精一区二区三区| 日本在线视频播放| 国产成人福利片| 亚洲色偷偷色噜噜狠狠99网| 99精品国产91久久久久久| 蜜桃传媒一区二区亚洲av| 国产人妖乱国产精品人妖| av小说在线观看| 国产精品伦理一区二区| 三级黄色在线观看| 亚洲精品老司机| 日本一二三区视频| 色婷婷亚洲综合| 7777久久亚洲中文字幕| 日韩精品一区二区三区蜜臀| 欧美视频在线观看一区二区三区| 亚洲精品久久久久久下一站| 欧美性孕妇孕交| 日韩在线中文字幕| 青青青国内视频在线观看软件| 91精品国产91久久久| 日产精品一区| 亚洲一区二区三区四区在线播放| a看欧美黄色女同性恋| 欧美日韩亚洲一区二区三区在线观看| 日韩在线观看一区 | 国产欧美日韩综合精品二区| 美女毛片一区二区三区四区| 亚洲精品影院| 亚洲午夜伦理| 国产网站免费在线观看| 久久激情综合网| 日韩精品视频一区二区| 国产精品热久久久久夜色精品三区 | 欧美综合在线观看视频| 国内精品伊人久久久久av影院| 国产伦精品一区二区三区88av| 久久综合国产精品| 9999热视频| 日韩欧美999| 国产成人精品av在线观| 亚洲视频999| 日本电影在线观看| 国产激情综合五月久久| av综合网址| 一区二区三区偷拍| 国产亚洲欧洲| 天天操夜夜操很很操| 国产色产综合色产在线视频| 久久久久亚洲AV| 欧美日韩精品是欧美日韩精品| 好吊色在线观看| 日韩在线欧美在线| 午夜伦理福利在线| 91视频免费在线观看| 久久亚洲在线| 欧美日韩在线中文| 成人爽a毛片一区二区免费| 亚洲欧美综合7777色婷婷| 欧美日韩免费观看中文| 国产高清免费av| 中文字幕av一区二区三区谷原希美| sm在线观看| 91嫩草在线| 天天影视欧美综合在线观看| 大香煮伊手机一区| av午夜一区麻豆| 青青草手机在线观看| 欧美肥妇毛茸茸| 在线免费av网站| 国产精品白嫩美女在线观看| 一呦二呦三呦国产精品| 精品少妇人妻av免费久久洗澡| 国产麻豆9l精品三级站| 国产美女高潮视频| 在线视频你懂得一区| 天堂在线免费av| 91国产精品电影| 牛牛影视久久网| 国产精品一色哟哟| 国产风韵犹存在线视精品| 国产喷水在线观看| 欧美日韩久久一区二区| 精品av中文字幕在线毛片| 国产91色在线免费| 奇米亚洲欧美| 成年人黄色片视频| 国产亚洲成aⅴ人片在线观看| 久久精品无码av| 亚洲天堂男人的天堂| 成人性生活av| 欧美日韩在线一二三| 久久中文在线| av电影网站在线观看| 在线免费观看日韩欧美| 北岛玲一区二区三区| 国产精品激情av在线播放| 清纯唯美日韩| 一区二区三区国产好的精华液| 亚洲免费看黄网站| 精品国产av一区二区| 国a精品视频大全| 日韩欧美在线精品| 日韩精品无码一区二区三区免费 | 亚洲国产精品va| 美女的胸无遮挡在线观看| 久久精品人成| 日日嗨av一区二区三区四区| 亚洲一区 欧美| 在线电影欧美成精品| 婷婷丁香在线| 国产在线精品日韩| 日一区二区三区| 黄色录像一级片| 精品久久久久久亚洲综合网 | mm131美女视频| 欧美综合色免费| 日本性爱视频在线观看| 麻豆91蜜桃| 久久精品国产77777蜜臀| 妺妺窝人体色www婷婷| 精品亚洲永久免费精品| 日本久久久久| aa视频在线播放| 国产农村妇女精品| 国产高清免费av| 日韩av片免费在线观看| 久久久久久久久久久9不雅视频| 好吊操视频这里只有精品| 日韩欧美在线中文字幕| 欧美一区二区三区在线观看免费| 51成人做爰www免费看网站| 夜夜嗨一区二区| 日本黄区免费视频观看| 精品精品国产高清一毛片一天堂| 亚洲黄色中文字幕| 黄色一级片网址| 久久久久亚洲综合| www香蕉视频| 国产精品福利网| 亚洲视频观看| 国产成人免费在线观看视频| 亚洲国产毛片完整版| 欧美v亚洲v综合v国产v仙踪林| 国产精品裸体瑜伽视频|