日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

阿里二面:要保證消息不丟失,又不重復,消息隊列怎么選型?

來源: 責編: 時間:2024-01-16 10:14:42 286觀看
導讀大家好,我是君哥。在使用消息隊列時,有兩個經常讓我們煩惱的問題,消息丟失和消息重復。那我們在做技術選型時,有沒有一個消息隊列能解決消息丟失和消息重復這兩個問題呢?消息丟失如上圖,從生產者發送消息,Broker 保存消息,消

qyq28資訊網——每日最新資訊28at.com

大家好,我是君哥。qyq28資訊網——每日最新資訊28at.com

在使用消息隊列時,有兩個經常讓我們煩惱的問題,消息丟失和消息重復。那我們在做技術選型時,有沒有一個消息隊列能解決消息丟失和消息重復這兩個問題呢?qyq28資訊網——每日最新資訊28at.com

消息丟失

qyq28資訊網——每日最新資訊28at.com

如上圖,從生產者發送消息,Broker 保存消息,消費者消費消息,每一個環節都有可能丟失消息。qyq28資訊網——每日最新資訊28at.com

發送丟失

生產者發送消息時,如果處理不當,很可能會造成消息丟失。qyq28資訊網——每日最新資訊28at.com

生產者發送消息,主流消息隊列都支持同步發送和異步發送。如果使用同步發送,生產者發送消息后,會同步等待 Broker 返回的 ACK,收到 ACK 消息,就認為消息發送成功。如果長時間沒有收到,則會認為消息發送失敗,需要進行重試。qyq28資訊網——每日最新資訊28at.com

同步發送可以保證消息不丟失,但是會有性能問題,所以多數情況會選擇異步發送。異步發送如何保證消息不丟失呢?主流消息隊列(比如 Kafka 和 RocketMQ)實現方法基本類似,使用回調函數來實現。下面看一下 Kafka 的異步發送代碼:qyq28資訊網——每日最新資訊28at.com

producer.send(record, new Callback() { public void onCompletion(RecordMetadata metadata, Exception exception) { if (exception != null) {  logger.error("發送消息失敗:", exception); } if (metadata != null) {     logger.info("消息發送成功");  } }});

消息存儲

生產者發送消息成功,也不能保證消息絕對不丟失。因為即使消息發送到 Broker,如果在消費者拉取到消息之前,Broker 宕機了,消息還沒有落盤,也會導致消息丟失。qyq28資訊網——每日最新資訊28at.com

在存儲階段要保證消息不丟失,可以考慮幾個方面:qyq28資訊網——每日最新資訊28at.com

同步刷盤

采用異步刷盤,如果在消息落盤之前 Broker 宕機了,就會造成消息丟失。而采用同步刷盤,等待消息落盤之后,再給 Sender 返回發送成功,可以從消息發送環節保證消息不丟失。qyq28資訊網——每日最新資訊28at.com

qyq28資訊網——每日最新資訊28at.com

在 RocketMQ 中,把 flushDiskType 參數配置為 SYNC_FLUSH 就可以開啟同步刷盤。qyq28資訊網——每日最新資訊28at.com

Broker 集群

如果 Broker 集群中只有一個節點,即使消息落盤成功了,Broker 發送故障,在 Broker 恢復以前消費者也會拉取不到消息。而且如果 Broker 磁盤故障不可恢復,消息也會丟失。qyq28資訊網——每日最新資訊28at.com

采用 Broker 集群可以很好地解決這個問題。見下圖:qyq28資訊網——每日最新資訊28at.com

qyq28資訊網——每日最新資訊28at.com

在 Broker 集群時,可以等待 2 個以上的節點同步消息完成后再給 Producer 返回成功。這樣即使一個 Broker 掛了,也可以很容易找到替代的 Broker。qyq28資訊網——每日最新資訊28at.com

消息消費

消費者保證不丟失消息,需要消費完成后再給 Broker 返回 ACK。在主流的消息隊列中,如果 Broker 收不到 ACK,都會給消費者再次發送這條消息。qyq28資訊網——每日最新資訊28at.com

有時候為了解決消息積壓的問題,消費者拉取到消息后會直接返回 ACK,然后再異步執行消息處理邏輯。這樣要保證消息不丟失,需要在返回 ACK 之前把消息保存到本地,比如持久化到數據庫,后面可以取數據庫保存的消息進行處理。qyq28資訊網——每日最新資訊28at.com

消息重復

消息重復一般有兩個原因,一個是生產者發送消息后沒有收到 ACK,然后進行重復發送,另一個原因是消費者消費完成后 Broker 沒有收到 ACK,導致消息重復推送給消費者。qyq28資訊網——每日最新資訊28at.com

重復消息會對業務造成影響,比如電商場景中的重復支付、賬務場景中的重復記賬,對業務造成的影響都比較嚴重。qyq28資訊網——每日最新資訊28at.com

從目前主流的消息隊列來看,并沒有一個消息隊列能解決消息重復消費的問題,只能在消費端做冪等處理。下面提供幾個思路作為參考。qyq28資訊網——每日最新資訊28at.com

數據庫唯一鍵約束

如果消息會落本地數據庫,可以采用消息 ID 作為唯一鍵。如果消息不落數據庫,可以將消息 ID 或者消息中其他唯一能標識消息的屬性作為唯一鍵落業務數據表。qyq28資訊網——每日最新資訊28at.com

保存消費記錄

我們也可以將消息 ID 保存 Redis,消費消息前判斷消息 ID 是否已存在。qyq28資訊網——每日最新資訊28at.com

ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();Boolean result = valueOperations.setIfAbsent(messageId, messageId);if (result) { //消費邏輯;} else { logger.error("這條消息已經消費,跳過,消息ID:{}", messageId);}

這里有一個注意點,如果消費失敗了,需要刪除 Redis 中保存的消息 ID。qyq28資訊網——每日最新資訊28at.com

總結

消息不丟失、不重復是消息隊列的基本要求,但這個基本要求還是很難滿足的。qyq28資訊網——每日最新資訊28at.com

消息丟失這個要求,主流消息隊列通過消息重試和消息持久化的方式可以滿足。qyq28資訊網——每日最新資訊28at.com

但消息重試也同時帶來了消息重復的可能性,主流消息隊列在解決重復消息的問題上并沒有現成的方案,對不允許重復消費的場景,需要開發人員在消費端做冪等處理。qyq28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-62355-0.html阿里二面:要保證消息不丟失,又不重復,消息隊列怎么選型?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 部署過Vue項目嗎?遇到404如何解決?

下一篇: Android開發之漸變色,你學會了嗎?

標簽:
  • 熱門焦點
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發布會上看到了iQOO的首款平板產品iQOO Pad。雖
  • Redmi Buds 4開箱簡評:才199還有降噪 可以無腦入

    在上個月舉辦的Redmi Note11T Pro系列新機發布會上,除了兩款手機新品之外,Redmi還帶來了兩款TWS真無線藍牙耳機產品,Redmi Buds 4和Redmi Buds 4 Pro,此前我們在Redmi Note11T
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 為什么你不應該使用Div作為可點擊元素

    按鈕是為任何網絡應用程序提供交互性的最常見方式。但我們經常傾向于使用其他HTML元素,如 div span 等作為 clickable 元素。但通過這樣做,我們錯過了許多內置瀏覽器的功能。
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • AMD的AI芯片轉單給三星可能性不大 與臺積電已合作至2nm制程

    據 DIGITIMES 消息,英偉達 AI GPU 出貨逐季飆升,接下來 AMD MI 300 系列將在第 4 季底量產。而半導體業內人士表示,近日傳出 AMD 的 AI 芯片將轉單給
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲黄色在线| 欧美视频在线一区二区三区| 午夜一区二区三区不卡视频| 欧美一区二区三区在| 久久久噜噜噜久久狠狠50岁| 欧美v国产在线一区二区三区| 欧美精品在线观看| 国产精品系列在线播放| 伊人久久久大香线蕉综合直播 | 亚洲欧洲一区二区三区在线观看| 中文欧美在线视频| 久久国产免费| 欧美精品观看| 国产精品一区三区| 亚洲国产成人精品视频| 国产精品99久久久久久久久| 久久精品国产清高在天天线| 欧美精品一区二区三| 国产精品亚洲综合一区在线观看| 在线观看国产一区二区| 亚洲一区二区三区在线| 免费成人高清视频| 国产精品亚洲综合久久| 亚洲国产毛片完整版| 午夜精品久久久久久久久久久久久| 模特精品裸拍一区| 国产色产综合产在线视频| 亚洲乱亚洲高清| 久久精品国产综合精品| 欧美日韩伊人| 亚洲国产婷婷综合在线精品| 先锋影音久久久| 欧美日本韩国在线| 尤物精品在线| 午夜精品在线| 欧美日韩美女| 亚洲国产精品一区二区久| 欧美一区二区三区在线观看视频| 欧美大片在线观看一区| 国产一区二区三区四区五区美女| 在线视频亚洲欧美| 免费亚洲一区二区| 国产亚洲毛片在线| 亚洲一区欧美一区| 欧美国产大片| 伊人狠狠色丁香综合尤物| 午夜久久资源| 国产精品www网站| 99精品热6080yy久久| 欧美va亚洲va国产综合| 今天的高清视频免费播放成人| 亚洲手机视频| 欧美乱妇高清无乱码| 亚洲国内精品| 久久一区二区视频| 国产一区二区精品久久99| 亚洲免费视频中文字幕| 欧美日韩在线不卡一区| 亚洲精品一区二| 男女精品视频| 亚洲国产欧美不卡在线观看| 久久蜜桃精品| 黑人操亚洲美女惩罚| 欧美影视一区| 国产视频一区二区三区在线观看| 亚洲免费婷婷| 国产精品家庭影院| 制服丝袜激情欧洲亚洲| 欧美日韩国产91| 亚洲裸体在线观看| 欧美精品激情blacked18| 亚洲国产毛片完整版 | 国产欧美在线| 午夜精品久久久久久久99樱桃| 国产精品家庭影院| 亚洲无吗在线| 国产精品盗摄久久久| 亚洲视频免费| 国产精品高清在线| 亚洲一区二区免费看| 欧美午夜剧场| 午夜国产欧美理论在线播放| 国产精品系列在线| 久久国产黑丝| 一区在线免费| 牛牛国产精品| 亚洲理论电影网| 欧美日韩卡一卡二| 亚洲一级黄色| 国产欧美日本| 欧美在线免费看| 黑人操亚洲美女惩罚| 老色鬼久久亚洲一区二区| 亚洲二区在线| 欧美日韩大片| 亚洲欧美日韩国产一区| 国产日韩欧美一二三区| 久久久精品一品道一区| 亚洲国产成人久久综合| 欧美精品在线视频观看| 亚洲一二三区在线| 国产乱人伦精品一区二区| 久久精品一区二区国产| 亚洲国产成人久久综合| 欧美日韩第一区日日骚| 午夜国产精品视频免费体验区| 国产亚洲精品一区二区| 久久在线视频| 99ri日韩精品视频| 国产精品老女人精品视频| 久久国产乱子精品免费女 | 一区二区三区在线看| 欧美成人中文字幕| 亚洲桃花岛网站| 国产一区二区黄色| 欧美成年人网| 亚洲永久精品国产| 合欧美一区二区三区| 欧美激情自拍| 午夜精品久久久久久久| 亚洲电影观看| 国产精品久久久999| 久久精品亚洲热| 亚洲久久视频| 国产欧美一区二区白浆黑人| 久久亚洲精品欧美| 在线视频你懂得一区二区三区| 国产一区二区三区四区hd| 欧美成人在线免费观看| 亚洲在线成人精品| 尤物99国产成人精品视频| 欧美视频免费| 久久人人爽人人爽| 亚洲午夜精品一区二区| 激情视频一区| 国产精品第一区| 美女亚洲精品| 午夜免费在线观看精品视频| 亚洲国产一区二区视频| 国产精品综合| 欧美另类亚洲| 久久亚洲欧美国产精品乐播| 亚洲一级黄色片| 在线观看欧美视频| 国产精品视频不卡| 欧美绝品在线观看成人午夜影视| 欧美与欧洲交xxxx免费观看| aaa亚洲精品一二三区| 黑人操亚洲美女惩罚| 国产精品久久久久aaaa樱花| 欧美成人国产va精品日本一级| 午夜精品亚洲一区二区三区嫩草| 亚洲精品国产视频| 黄色成人91| 国产精品色婷婷| 欧美精品一区二区精品网| 久久天堂精品| 亚洲欧美区自拍先锋| 99视频+国产日韩欧美| 永久免费视频成人| 国产欧美日韩一区| 欧美色欧美亚洲另类二区| 欧美va亚洲va国产综合| 久久精品天堂| 午夜精品成人在线| 亚洲色图综合久久| 亚洲精品美女久久7777777| 精品二区视频| 国产一区二区精品丝袜| 国产精品免费看久久久香蕉| 欧美日韩一级片在线观看| 欧美顶级少妇做爰| 久久婷婷国产综合国色天香| 性欧美大战久久久久久久久| 亚洲一区二区三区免费观看| 亚洲乱码精品一二三四区日韩在线| 尤物在线观看一区| 国内精品久久久久久| 国产女主播一区二区| 国产精品久久久一区麻豆最新章节| 欧美巨乳在线| 欧美日产国产成人免费图片| 欧美国内亚洲| 欧美高清视频www夜色资源网| 久久综合久久久久88| 久久久久国内| 久久精品国产亚洲精品| 欧美专区第一页| 欧美伊久线香蕉线新在线| 亚洲欧美日韩视频二区| 亚洲欧美激情一区二区| 亚洲愉拍自拍另类高清精品| 中文av一区二区| 亚洲天堂av高清| 亚洲一区二三| 亚洲欧美日韩一区在线| 亚洲资源av| 午夜精品美女久久久久av福利| 亚洲欧美中文在线视频| 亚洲欧美日韩爽爽影院| 欧美伊久线香蕉线新在线| 久久高清一区| 久久亚洲精品一区二区| 浪潮色综合久久天堂|