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

回答面試官:如何保證消息不丟失

開發(fā) 前端
對于這個技術(shù)點不知道大家掌握的如何了,消息隊列現(xiàn)在應(yīng)該是公司必備的技能之一了,無論是RabbitMQ還是rocketmq,或者支持大數(shù)量的kafka。

[[430419]]

rocketmq是阿里開源的一個性能很強大的消息隊列,很多公司都在用,而且經(jīng)歷了多次雙十一的洗禮,支持多種特性

對于這個技術(shù)點不知道大家掌握的如何了,消息隊列現(xiàn)在應(yīng)該是公司必備的技能之一了,無論是RabbitMQ還是rocketmq,或者支持大數(shù)量的kafka

今天我們要說的一個問題,是rocketmq如何保證消息的不丟失??

不知道大家對于這個問題遇到過沒有,或者大家聽到這個問題的第一反應(yīng)是什么,應(yīng)該如何做,如何避免消息丟失,一起來看看

首先我們知道rocketmq的一個消息從生產(chǎn)到最終的消費過程需要經(jīng)歷總共三個階段,或者說會經(jīng)過三個地方,分別是producer的發(fā)送端、broker的持久化機制、以及consumer的消費端

從生產(chǎn)者producer的角度:消息生產(chǎn)之后傳遞到broker,如果消息未能正確的存儲到broker中,算作消息丟失

從broker的角度:消息默認保存到broker的內(nèi)存中,異步保存到磁盤上,如果發(fā)生宕機、磁盤崩潰會造成消息丟失

從消費者consumer的角度:消息完成了持久化之后,consumer拉取之后未能成功消費且未反饋給broker,這樣算作消息丟失,可能消費過程異常或者網(wǎng)絡(luò)抖動造成消息丟失

生產(chǎn)者角度:消費生產(chǎn)之后傳遞到broker,如果消息未能正確的保存到broker中,算作消息丟失

從生產(chǎn)者的角度,生產(chǎn)了消息就是要通過網(wǎng)絡(luò)發(fā)送到broker,其實只需要保證一點,就是確認這個消息已經(jīng)成功發(fā)送到broker上了

生產(chǎn)者只需要接收發(fā)送消息返回的確認響應(yīng)即可,就可以代表消息發(fā)送成功

代碼示例:

  1. DefaultMQProducer mqProducer=new DefaultMQProducer("test"); 
  2. // 設(shè)置 nameSpace地址 
  3. mqProducer.setNamesrvAddr("namesrvAddr"); 
  4. mqProducer.start(); 
  5. Message msg = new Message("topic" /* Topic */, 
  6.         "Captain".getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */ 
  7. ); 
  8. // 發(fā)送消息到Broker 
  9. try { 
  10.     SendResult sendResult = mqProducer.send(msg); 
  11. } catch (Exception e) { 
  12.     e.printStackTrace(); 

當然,發(fā)送消息也分為同步和異步兩種,消息發(fā)送成功之后會返回下面這四種不同的響應(yīng)狀態(tài)

SEND_OK

消息發(fā)送成功,但是也并不意味這完全代表不會丟失消息,這還要取決于broker的刷盤方式

這個下面在broker方面會說,需要啟動SYNC_MASTER或SYNC_FLUSH。(也就是同步)

FLUSH_DISK_TIMEOUT

如果Broker設(shè)置MessageStoreConfig的FlushDiskType = SYNC_FLUSH(默認為ASYNC_FLUSH),并且Broker沒有在MessageStoreConfig的syncFlushTimeout(默認為5秒)內(nèi)完成刷新磁盤,得到這個狀態(tài)

也就是此時刷盤超時,未能在規(guī)定時間內(nèi)落到硬盤上,檢查設(shè)置是否合理、硬盤大小等情況

FLUSH_SLAVE_TIMEOUT

如果Broker的角色是SYNC_MASTER(默認為ASYNC_MASTER),并且從屬Broker未在MessageStoreConfig的syncFlushTimeout(默認為5秒)內(nèi)完成與主服務(wù)器的同步,返回這個結(jié)果

主從同步時間默認也是5秒,需要完成主從同步,這個下面在說broker的時候也會說到,你想啊,要是master掛了或者磁盤崩潰了,這是不是也不能百分百保證消息不丟失

SLAVE_NOT_AVAILABLE

如果Broker的角色是SYNC_MASTER(默認為ASYNC_MASTER),但沒有配置slave Broker,返回這個狀態(tài)

這個在保證消息絕對不丟失的情況下是不允許存在的,這個狀態(tài)也是屬于需要處理的,沒有可靠的slave,也就意味著沒有可靠的備份數(shù)據(jù),所以這種情況也需要考慮

另外呢,上面還說了一種異步的消息發(fā)送方式,這種一般是用于鏈路較長,對于時間比較敏感的業(yè)務(wù)

這種情況下需要特別注意的就是我們需要設(shè)置消息發(fā)送完成的回調(diào),這樣才能更好的保證消息不丟失

采取事務(wù)消息的投遞方式,并不能保證消息100%投遞成功到了Broker,但是如果消息發(fā)送Ack失敗的話,此消息會存儲在CommitLog當中,但是對ConsumerQueue是不可見的

可以在日志中查看到這條異常的消息,嚴格意義上來講,也并沒有完全丟失

  • broker:消息默認保存到broker的內(nèi)存中,異步保存到磁盤上,如果發(fā)生宕機、磁盤崩潰會造成消息丟失

順序消費這個場景其實不是特別的常見,但是也是必不可少的,因為在某些業(yè)務(wù)場景下順序是很關(guān)鍵的,保證消息的消費順序也是很關(guān)鍵

消息到了broker之后,默認是優(yōu)先保存到broker的內(nèi)存中,然后立刻返回響應(yīng)給生產(chǎn)者producer,然后broker自己定期將消息批量的異步的保存到硬盤上

有的小伙伴一小子就發(fā)現(xiàn)了問題不是那么簡單,消息來了之后還沒保存到硬盤,就直接返回了,broker直接宕機崩潰了,那這消息豈不無跡可尋了

這樣的優(yōu)點是提高交互的效率,同時減少IO的次數(shù),問題就是會造成消息丟失

如果我們想要保證消息不丟失,那就需要保證消息成功保存到broker之后才可以返回,只需要將消息的保存機制修改為同步刷盤的方式,也就是只有消息保存到broker的磁盤成功之后,才會返回響應(yīng)

  1. ## 默認情況為 ASYNC_FLUSH  
  2. flushDiskType = SYNC_FLUSH 

如果broker未能在規(guī)定的同步時間(默認5秒)完成刷盤,將返回FLUSH_DISK_TIMEOUT給生產(chǎn)者

上面也介紹了這個了FLUSH_DISK_TIMEOUT了

一般在系統(tǒng)中為了保證可用性,broker通常采用的都是一主master多從slave的部署方式,屬于集群部署

為了保證消息不丟失,消息需要復(fù)制到slave節(jié)點,其實默認的情況下,消息寫入到broker之后就會返回成功

但是!如果master突然宕機或者磁盤崩潰了,那么這個消息就徹底丟失了,沒有備份,所以呢,這里還需要把master和slave的異步復(fù)制改成同步復(fù)制

  1. ## master 節(jié)點配置 
  2. flushDiskType = SYNC_FLUSH 
  3. brokerRole=SYNC_MASTER 
  4.  
  5. ## slave 節(jié)點配置 
  6. brokerRole=slave 
  7. flushDiskType = SYNC_FLUSH 

也就是只有slave也刷盤到磁盤成功之后,才會給producer返回成功

當然你要這里說,master和slave也可能同時宕機,同時磁盤崩潰,那最終還是無法滿足百分百保證消息的不丟失

這種問題啊,其實就像是TCP的三次交互一樣,三次交互之后一定保證客戶端和服務(wù)端通信成功了嗎,答案是不一定

我們只能在有限的資源下盡量的去滿足系統(tǒng)的穩(wěn)定性

  • consumer:消息完成了持久化之后,consumer拉取之后未能成功消費且未反饋給broker,這樣算作消息丟失,可能消費過程異常或者網(wǎng)絡(luò)抖動造成消息丟失

消費者從broker拉取消息,然后進行相應(yīng)的業(yè)務(wù)的消費,消費成功會返回一個消費成功的狀態(tài)給broker,broker如果沒收到確認信息,消費者下次拉取重新拉取該消息

  1. // 注冊回調(diào)實現(xiàn)類來處理從broker拉取回來的消息 
  2. consumer.registerMessageListener(new MessageListenerConcurrently() { 
  3.     @Override 
  4.     public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) { 
  5.         // 標記該消息已經(jīng)被成功消費 
  6.         return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; 
  7.     } 
  8. }); 

consumer自身可以維護一個持久化的offset,對應(yīng)MessageQueue里面的min offset,標記已經(jīng)成功消費或者已經(jīng)成功發(fā)回到broker的消息下標

如果consumer消費失敗,會把這個消息發(fā)回給broker,發(fā)回成功后,更新自己的offset

如果發(fā)回給broker時,broker掛掉了,那么consumer也會定時重試這個操作

即使consumer和broker一起掛掉了,消息也不會丟失,因為consumer里面的offset會定時持久化,重啟之后,繼續(xù)拉取offset之前的消息到本地,重新消費

本文轉(zhuǎn)載自微信公眾號「Java賊船」

 

責任編輯:姜華 來源: Java賊船
相關(guān)推薦

2025-11-11 09:05:09

2022-08-26 05:24:04

中間件技術(shù)Kafka

2025-11-17 01:22:00

2024-08-06 09:55:25

2020-12-31 07:34:04

Redis數(shù)據(jù)宕機

2025-09-18 08:53:20

2025-09-22 08:26:37

2024-02-28 10:14:47

Redis數(shù)據(jù)硬盤

2023-09-01 15:27:31

2021-03-08 10:19:59

MQ消息磁盤

2024-06-06 11:38:55

2024-06-18 08:26:22

2021-12-21 07:07:43

HashSet元素數(shù)量

2025-10-09 01:22:00

2019-11-26 08:24:13

TCP擁塞控制網(wǎng)絡(luò)協(xié)議

2024-02-26 08:10:00

Redis數(shù)據(jù)數(shù)據(jù)庫

2024-11-11 07:05:00

Redis哨兵模式主從復(fù)制

2025-07-21 09:02:45

2021-03-22 17:20:48

MYSQL開發(fā)數(shù)據(jù)庫

2025-03-10 11:48:22

項目服務(wù)設(shè)計
點贊
收藏

51CTO技術(shù)棧公眾號

成人午夜av影视| 99re6这里只有精品| 欧美日韩免费看| 五月天亚洲综合小说网| 国产精品女人久久久| 欧美日韩午夜| 亚洲午夜国产成人av电影男同| 亚洲xxx在线观看| 美女精品视频| 国产亚洲综合在线| 99久久伊人精品影院| 亚洲欧美偷拍一区| 综合日韩在线| 亚洲天堂第一页| 漂亮人妻被黑人久久精品| 国产亚洲欧美日韩精品一区二区三区 | 午夜国产一区二区| 日韩精品视频观看| 中文字幕 日韩 欧美| 极品av在线| 亚洲精品日日夜夜| 亚洲午夜在线观看| 欧美孕妇性xxxⅹ精品hd| 国产98色在线|日韩| 国产精品一区二区三区久久久| 国产无遮挡又黄又爽在线观看| 欧州一区二区| 亚洲男人的天堂在线播放| 色哟哟网站在线观看| 丰满少妇一区| 五月婷婷久久丁香| 日韩国产成人无码av毛片| 蜜桃视频在线观看网站| 99久久婷婷国产| 99久久精品久久久久久ai换脸| 91精品在线视频观看| 日韩精品福利网| 欧美性视频网站| 国产一级一片免费播放| 综合激情一区| 久久影视免费观看| 麻豆明星ai换脸视频| 日韩大片在线观看| 色悠悠久久久久| 青青草华人在线视频| 黄色不卡一区| 国产亚洲欧美aaaa| 国产ts在线播放| 视频精品在线观看| 亚洲男人第一av网站| www.av欧美| 国产一区日韩| 中国人与牲禽动交精品| 精品成人无码一区二区三区| 国内精品久久久久久99蜜桃| 国产亚洲欧洲黄色| 色屁屁草草影院ccyy.com| 精品高清久久| 日韩中文在线中文网三级| 麻豆一区在线观看| 91精品精品| 欧美成人午夜激情视频| 久久久久久久久久一区二区三区 | 免费91麻豆精品国产自产在线观看| 国产传媒视频在线| 久久精品亚洲人成影院 | 午夜欧美性电影| 国产高清视频在线| 国产精品全国免费观看高清 | 日韩福利视频| 亚洲s色大片| 亚洲精品乱码久久久久久久久| 欧美做受777cos| free性欧美| 一本色道**综合亚洲精品蜜桃冫 | 国产毛片精品视频| 国产精品久久亚洲7777| 人人九九精品| 中文字幕中文字幕一区| 免费在线精品视频| 高清毛片在线观看| 精品欧美aⅴ在线网站| 九色porny91| 国产精品99久久免费| 精品国产一区二区三区四区四 | 日日噜噜夜夜狠狠| 激情综合婷婷| 亚洲欧美日韩精品久久亚洲区 | 久久精品日韩精品| 午夜视频在线免费观看| 亚洲一级二级三级| 爆乳熟妇一区二区三区霸乳| 国产精品成人**免费视频| 亚洲国产精品va| 91视频免费看片| 亚洲日本国产| 国产在线久久久| 天天干,夜夜爽| 亚洲人成人一区二区在线观看| av免费观看大全| 欧美大片网站| 亚洲精品视频在线播放 | 色先锋aa成人| 在线观看一区二区三区视频| 精品国产一区探花在线观看| 欧美国产日韩一区二区在线观看| 日韩免费av网站| 成人性生交大片免费| 亚洲欧美日产图| 水蜜桃在线视频| 日韩精品一区二区在线| 亚洲一级理论片| 午夜在线a亚洲v天堂网2018| 成人国产精品一区二区| 麻豆国产在线播放| 亚洲成人资源在线| 欧洲在线免费视频| 成人在线一区| 国产91在线播放精品91| 日本xxxx人| 亚洲精品国产一区二区精华液| 亚洲欧美另类动漫| 亚洲精品亚洲人成在线观看| 欧美激情小视频| 国产av无码专区亚洲a∨毛片| 国产色婷婷亚洲99精品小说| 亚洲中文字幕无码专区| 天堂va欧美ⅴa亚洲va一国产| 色婷婷成人综合| 99re国产在线| 久久久精品免费免费| jizzjizz国产精品喷水| 波多野结衣欧美| 欧美国产视频一区二区| 亚洲大尺度视频| 亚洲欧美一区二区三区久本道91 | 福利在线一区二区| 午夜视频在线观看精品中文| 北条麻妃一区二区三区中文字幕 | 久久免费小视频| 国产福利91精品一区| av电影一区二区三区| 99久久99九九99九九九| 啊v视频在线一区二区三区| 一级黄色a视频| 国产精品久久久久三级| www亚洲成人| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 青青草国产精品亚洲专区无| 欧美一区二区三区四区在线观看地址 | 欧美久久久久久| 日本不卡一二三| 国产亚洲成精品久久| 中文字幕制服诱惑| 中文字幕av一区二区三区免费看 | 成人午夜大片免费观看| 黄页网站大全在线观看| 亚洲另类av| 国产精品成人一区二区| 午夜免费视频在线国产| 3atv在线一区二区三区| 日韩a级片在线观看| 风间由美性色一区二区三区| 九色自拍视频在线观看| 亚洲丝袜啪啪| 国产精品女主播| www久久日com| 日韩不卡在线观看| 欧美性猛交xxxx乱大交hd| 中文字幕免费在线观看视频一区| 伊人国产在线视频| 中文字幕一区二区三三| 国产综合第一页| 777午夜精品电影免费看| www.久久久久久.com| 亚洲精品18p| 日本道免费精品一区二区三区| 亚洲欧美卡通动漫| 夫妻av一区二区| 在线免费视频a| 中文字幕一区二区三区在线视频| 久久久久久九九九九| 欧美天堂在线| 欧美激情在线播放| 亚洲日本香蕉视频| 在线电影一区二区三区| 日本午夜精品理论片a级app发布| 久久精品一区二区三区不卡| 日韩av自拍偷拍| 国产欧美日韩一级| 国产手机视频在线观看| 日本三级久久| 91久久精品久久国产性色也91| 成人免费网站观看| 色爱精品视频一区| 欧美一级特黄aaaaaa大片在线观看 | 久久综合色一综合色88| 热久久久久久久久| 欧美亚洲一区二区三区| 四虎影院一区二区| 亚洲精品推荐| 国产免费高清一区| 亚洲欧洲一二区| 日韩美女视频免费在线观看| 中国av在线播放| 中文字幕久久精品| 在线观看xxx| 日韩欧美一级二级三级久久久| 中文字幕免费观看| 亚洲超碰97人人做人人爱| 性爱在线免费视频| 337p粉嫩大胆噜噜噜噜噜91av| 午夜影院免费版| 日韩电影免费在线| 日韩小视频在线播放| 婷婷色综合网| 先锋影音欧美| 深爱激情综合| 精品在线视频一区二区| 永久免费精品视频| 成人免费视频网址| 草民电影神马电影一区二区| 欧美亚洲第一区| 国产va在线视频| 欧美裸体xxxx极品少妇| 日韩免费网站| 综合国产在线观看| 国产福利第一视频在线播放| 日韩精品在线视频观看| 亚洲国产一二三区| 日韩你懂的电影在线观看| 国产精品久久影视| 正在播放一区二区| 国产精品久久久久久久免费看| 欧洲人成人精品| 香蕉污视频在线观看| 黄色成人在线播放| 欧美啪啪小视频| 狠狠干狠狠久久| 日本免费观看视| 天天色天天操综合| 亚洲免费在线观看av| 精品久久久久久中文字幕| 国产午夜视频在线播放| 亚洲国产aⅴ成人精品无吗| 九九九国产视频| 午夜激情一区二区| 国产美女激情视频| 欧美性生交xxxxx久久久| 亚洲成熟少妇视频在线观看| 日本高清不卡aⅴ免费网站| 日韩不卡高清视频| 欧美日韩亚洲综合在线| 91 中文字幕| 欧美一区三区二区| 亚洲精品久久久久久无码色欲四季| 日韩一区二区三区视频在线 | 成人在线免费观看视频网站| 欧美一区综合| 无码专区aaaaaa免费视频| 日韩一级欧洲| 狠狠热免费视频| 精品一区二区三区的国产在线播放| 欧美又黄又嫩大片a级| 国产精品888| 加勒比精品视频| 久久久久久久国产精品影院| 日本伦理一区二区三区| 亚洲精品中文字幕乱码三区| 国产91av视频| 欧美日韩亚洲综合一区| 99视频国产精品免费观看a| 亚洲成色777777女色窝| 黄色片在线免费观看| xvideos亚洲人网站| av丝袜在线| 国产精品成人播放| 日韩视频在线直播| 蜜桃免费一区二区三区| 99久久夜色精品国产亚洲1000部| 日韩视频 中文字幕| 免费看的黄色欧美网站| 日本超碰在线观看| thepron国产精品| japanese中文字幕| 亚洲欧美电影院| 久久99国产综合精品免费| 欧美剧在线免费观看网站| 日本激情视频网站| 中文字幕无线精品亚洲乱码一区| 中文字幕伦理免费在线视频| 国产成人a亚洲精品| 精品视频一区二区三区| 欧美激情第一页在线观看| 亚洲成人免费| 99免费视频观看| 成人午夜在线播放| 东京热无码av男人的天堂| 亚洲成人免费看| 一区二区的视频| 精品视频久久久久久| 国产精品剧情一区二区在线观看| 97人人模人人爽人人喊中文字| 九七电影院97理论片久久tvb| 国产综合第一页| 欧美.www| www.精品在线| 久久精品欧美一区二区三区不卡 | 一区二区伦理片| 夜夜精品浪潮av一区二区三区| 日本欧美www| 日韩成人高清在线| 激情网站在线| 18成人免费观看网站下载| 成人aaaa| 少妇人妻互换不带套| 99精品视频在线观看| 男女羞羞免费视频| 538在线一区二区精品国产| 国产系列电影在线播放网址| 午夜精品一区二区三区av| 免费观看性欧美大片无片| 亚洲国产精品www| 日韩二区三区四区| 97人妻精品一区二区免费| 精品国产乱码久久久久久虫虫漫画 | 少妇精品视频一区二区免费看| 久久福利电影| 亚洲黄色天堂| 特级特黄刘亦菲aaa级| 亚洲伦在线观看| 国产精品系列视频| 日韩亚洲欧美中文高清在线| 成人全视频在线观看在线播放高清| 久久超碰亚洲| 美女尤物久久精品| 手机av免费看| 欧美日韩亚洲一区二| 五月婷婷丁香花| 68精品久久久久久欧美| 激情小说亚洲色图| 777精品久无码人妻蜜桃| aaa亚洲精品| 久久免费激情视频| 日韩经典第一页| 波多野结衣亚洲一二三| 欧洲av一区| 日本少妇一区二区| 性爱在线免费视频| 91精品欧美福利在线观看| 含羞草www国产在线视频| 亚洲www永久成人夜色| 亚洲欧美一级二级三级| 国产一精品一aⅴ一免费| 亚洲午夜一区二区| 性感美女视频一二三| 热久久99这里有精品| 精品久久久亚洲| 中文字幕中文在线| 亚洲精品国产第一综合99久久 | 精品中文字幕在线2019| 91九色鹿精品国产综合久久香蕉| 免费一级淫片aaa片毛片a级| 成人a免费在线看| 天天干天天色综合| 最近2019年日本中文免费字幕| 95精品视频| 丁香六月激情婷婷| 久久久三级国产网站| 91中文字幕在线播放| 欧美俄罗斯性视频| 日韩极品在线| 色播五月激情五月| 亚洲18女电影在线观看| 男同在线观看| 成人午夜在线观看| 亚洲另类黄色| 国产黄色录像视频| 日韩精品一区二区三区swag| 天堂在线中文网官网| 中文字幕欧美人与畜| 成人丝袜18视频在线观看| 免费观看日批视频| 欧美丰满老妇厨房牲生活| 尤物tv在线精品| 红桃视频 国产| 五月激情综合色| 麻豆网在线观看| 乱一区二区三区在线播放| 极品少妇xxxx精品少妇偷拍 | 欧美videossex| 欧洲av一区| 成人av在线电影| 91福利免费视频| 欧美中文字幕在线播放| 亚洲一级淫片| 国产一二三四区在线| 亚洲风情亚aⅴ在线发布| 欧美韩国日本| 国模吧无码一区二区三区|