精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

日韩亚洲欧美中文字幕| 男同互操gay射视频在线看| 国产成人亚洲欧洲在线| 亚洲永久精品唐人导航网址| 欧美午夜精品免费| 91制片厂免费观看| 色屁屁草草影院ccyycom| 免费亚洲视频| 久久精品亚洲94久久精品| 国产一级二级av| 日韩伦理在线| 亚洲天堂成人在线观看| 精品一区二区国产| 在线免费a视频| 亚洲激情二区| 色777狠狠综合秋免鲁丝| 精品国产乱码久久久久夜深人妻| 日韩电影免费观看高清完整版| 国产精品色在线观看| av一区观看| 日韩欧美一级大片| 亚洲小说欧美另类婷婷| 最新日韩中文字幕| 噜噜噜在线视频| 久久国产精品美女| 欧美亚洲动漫制服丝袜| 日韩国产一级片| 在线免费观看的av网站| 91丨porny丨首页| 亚洲一区二区自拍| 天干夜夜爽爽日日日日| 黄色亚洲免费| 久久精品国产亚洲7777| 国产高潮呻吟久久| 国产成人一二片| 91电影在线观看| 日韩精品―中文字幕| 污污视频在线看| 中文字幕中文字幕一区二区| 免费看成人午夜电影| 狠狠综合久久av一区二区| 久久99国产精品免费网站| 欧美中文字幕视频在线观看| 精品爆乳一区二区三区无码av| 成人激情开心网| 精品av综合导航| 能看毛片的网站| 国产精久久一区二区| 欧美中文字幕亚洲一区二区va在线| 国产夫妻自拍一区| 伦理在线一区| 一区二区三区毛片| 久久人妻无码一区二区| 中文日本在线观看| 中文字幕不卡三区| 亚洲毛片aa| 最新国产在线观看| 国产精品三级视频| 亚洲视频电影| 69av亚洲| 亚洲欧洲国产日本综合| 在线视频一区观看| 黄色网页在线看| 亚洲男人的天堂在线观看| 91免费视频黄| gogo在线高清视频| 洋洋成人永久网站入口| 欧美 日韩 国产精品| а√资源新版在线天堂| 一区二区三区av电影 | 欧美艳星介绍134位艳星| 亚洲人成电影在线| 午夜在线观看一区| 日韩免费高清| 久久成人精品视频| 久久久久香蕉视频| 国产日韩一区| 国产精品wwwwww| 一级做a爰片久久毛片16| 精品午夜久久福利影院| 91视频8mav| 亚洲国产综合网| av一区二区三区四区| 久久精品日产第一区二区三区| 婷婷在线免费观看| 久久蜜桃av一区精品变态类天堂| 欧美日韩最好看的视频| 在线免费看黄网站| 亚洲中国最大av网站| 丰满爆乳一区二区三区| 欧美极品免费| 91精品国产91综合久久蜜臀| 日本wwwwwww| 亚洲区小说区| 久久影院资源网| 日韩 欧美 精品| 蜜桃久久久久久久| 91丝袜脚交足在线播放| 久久精品国产亚洲a∨麻豆| 国产精品久久国产精麻豆99网站| 亚洲一区 在线播放| 日韩理论视频| 日韩一区二区在线看| 欧美做受喷浆在线观看| 91精品久久久久久久久久不卡| 久久久久在线观看| 精品乱码一区内射人妻无码 | 精品国产电影一区| 国产高清视频网站| 久久365资源| 日韩在线视频观看| 天堂网av手机版| 国产在线精品国自产拍免费| 免费试看一区| 污污视频在线看| 欧美色手机在线观看| 免费a v网站| 欧美777四色影| 国产精品99久久久久久久久久久久 | 五月婷婷六月丁香激情| 国产伦精品一区二区三区在线播放| 国产午夜精品全部视频在线播放 | 亚洲涩涩在线观看| 免费短视频成人日韩| 欧美富婆性猛交| 96日本xxxxxⅹxxx17| wwwwww.欧美系列| 99久久久精品视频| 亚洲精品第一| 亚洲欧美制服综合另类| 国产大片中文字幕在线观看| 精品一区精品二区高清| 日韩精品成人一区二区在线观看| 黄色影院在线看| 欧美一区二区视频观看视频| 亚洲天堂av中文字幕| 久久一二三四| 麻豆传媒一区二区| av丝袜在线| 精品日韩欧美在线| 亚洲国产成人精品综合99| 麻豆精品一区二区| 亚洲国产欧美不卡在线观看| 台湾佬成人网| 日韩美女av在线| 69精品久久久| 成人夜色视频网站在线观看| 六月婷婷激情综合| 日韩精品视频中文字幕| 久久艳片www.17c.com | 蜜臀av性久久久久蜜臀aⅴ| 青娱乐一区二区| 成人直播视频| 一区二区欧美久久| 综合久久中文字幕| 国产精品国产自产拍高清av王其| 亚洲一区二区蜜桃| 日韩欧美二区| 成人h视频在线| 国产秀色在线www免费观看| 91精品免费在线| 999精品视频在线观看播放| 久久se这里有精品| 国产一区一区三区| 日本精品视频| 欧美黑人xxxx| 天堂视频中文在线| 色av成人天堂桃色av| 美女被到爽高潮视频| 美洲天堂一区二卡三卡四卡视频| 一本一本a久久| 蜜桃精品视频| 国产69精品久久久久久| 国产视频网站在线| 91麻豆精品国产自产在线观看一区| 亚洲AV成人无码精电影在线| 国产成人免费视频网站| 日本www在线视频| 国产精品美女久久久久久不卡 | 亚洲欧美专区| 欧美极品少妇xxxxⅹ喷水 | 国产亚洲精品久久久| 91精品国产乱码久久久久| 亚洲丝袜自拍清纯另类| 欧洲熟妇的性久久久久久| 国产亚洲一级| 一个色的综合| 中文字幕区一区二区三| 奇米成人av国产一区二区三区| 国产1区2区3区在线| 91精品国产全国免费观看| 91精品国产高潮对白| 久久久91精品国产一区二区三区| 国产美女18xxxx免费视频| 在线一区电影| 欧美大香线蕉线伊人久久| 久久91视频| 性欧美激情精品| 天堂中文8资源在线8| 亚洲第一精品电影| 国产偷人爽久久久久久老妇app| 亚洲免费毛片网站| 成人片黄网站色大片免费毛片| 激情综合五月婷婷| 欧美色图色综合| 午夜精品毛片| 日本一区二区在线视频| 中文一区二区三区四区| 国产精品美乳在线观看| sm久久捆绑调教精品一区| 色婷婷av一区二区三区在线观看 | 欧美一区 二区 三区| 欧美成人一区在线| 你懂得网站在线| 精品国精品自拍自在线| 一级黄色片在线观看| 洋洋成人永久网站入口| 少妇太紧太爽又黄又硬又爽小说| www.成人网.com| 久久精品视频在线观看免费| 欧美一级网站| 成人在线播放网址| 综合在线一区| 视频一区亚洲| 国产99久久久国产精品成人免费 | 中文字幕亚洲在线观看| 国产精品久久在线观看| 亚洲电影观看| 久久理论片午夜琪琪电影网| a视频在线观看| 日韩在线欧美在线| 国产高清美女一级毛片久久| 亚洲黄色www网站| 不卡av中文字幕| 91精品一区二区三区在线观看| 尤物视频免费观看| 日韩欧美精品免费在线| 国产精品7777| 亚洲一区二区av在线| 三级影片在线看| **性色生活片久久毛片| 久久久国产一级片| 国产精品高清亚洲| 国产午夜精品久久久久久久久| 久久久国产午夜精品| 内射中出日韩无国产剧情| 成人一道本在线| 久久久久无码国产精品一区李宗瑞| 国产一区二区视频在线| 色婷婷激情视频| 精品一区二区免费| 特黄视频免费观看| 国产一区二区美女诱惑| 亚洲综合123| 国产综合色产在线精品| 波多野结衣在线免费观看| 国产综合色在线| 日本wwww色| 从欧美一区二区三区| 理论片大全免费理伦片| a级高清视频欧美日韩| www.88av| 久久久高清一区二区三区| 最近中文字幕免费视频| 欧美激情一区二区三区| 免费黄色激情视频| 樱花影视一区二区| 黄网站免费在线| 欧美日韩国产专区| 免费黄色片视频| 欧美日韩视频在线观看一区二区三区 | 国产成人av网| 欧美a一级片| 亚洲精品日韩激情在线电影| 中文字幕一区图| 九九热久久66| 欧美色网址大全| 一本—道久久a久久精品蜜桃| 一区二区中文| 欧日韩免费视频| 免费在线看成人av| 97超碰免费在线观看| www久久精品| 欧日韩不卡视频| 夜夜嗨av一区二区三区| 无码人妻精品一区二区蜜桃色欲 | 亚洲男人天堂色| 国精产品一区一区三区mba桃花| 日本wwwwwww| 国产女同性恋一区二区| 小泽玛利亚一区二区免费| 亚洲444eee在线观看| 中文字幕 人妻熟女| 日韩欧美专区在线| 国产资源在线观看| 欧美超级免费视 在线| 亚洲欧洲美洲av| 99超碰麻豆| 国产欧美高清视频在线| 亚洲国产一二三精品无码 | 91精品国产高清久久久久久| 国产成人免费9x9x人网站视频| 亚洲a∨日韩av高清在线观看| 神马午夜久久| 99热这里只有精品免费| 老牛影视一区二区三区| 中文字幕永久免费| 国产精品网曝门| 天堂网av手机版| 欧美一卡二卡三卡四卡| 国内av一区二区三区| 欧美激情一级二级| 高清在线一区| 九色视频成人porny| 欧美激情综合色综合啪啪| 国产日韩欧美久久| 91美女片黄在线| 精品处破女学生| 91麻豆精品国产91久久久使用方法 | 欧美不卡三区| 亚洲婷婷免费| 四虎成人在线播放| 中文字幕亚洲区| 五月婷婷激情视频| 精品无人区乱码1区2区3区在线| av在线下载| 国产一区二区在线播放| 国产成人手机高清在线观看网站| 99在线免费视频观看| 国产毛片一区二区| 三级全黄做爰视频| 欧美日韩国产小视频| 高清av电影在线观看| 欧洲中文字幕国产精品| 欧美大胆a级| 日韩精品在线中文字幕| 国产高清在线观看免费不卡| 国产中文字幕久久| 欧美日韩一区二区三区四区| 蝌蚪视频在线播放| 国产成人鲁鲁免费视频a| 日本亚洲不卡| 欧美大片在线播放| 波多野洁衣一区| 日韩av一二三区| 精品福利一二区| 成人国产电影在线观看| 精品久久久三级| 亚洲专区一区二区三区| 久久久久亚洲AV成人无码国产| 亚洲一二三区视频在线观看| 国产ts人妖调教重口男| 九九九久久久久久| 伊人久久噜噜噜躁狠狠躁| 成人免费观看在线| 成人性视频免费网站| 色播视频在线播放| 亚洲福利视频专区| 色戒汤唯在线观看| 日本在线播放不卡| 老色鬼精品视频在线观看播放| 国产视频精品免费| 日韩一区二区三区电影| 暖暖在线中文免费日本| 国产欧美日韩一区二区三区| 亚洲乱亚洲高清| 熟女俱乐部一区二区视频在线| 欧美午夜片在线免费观看| 国产在线一在线二| 国产欧美日韩中文| 国内精品美女在线观看| 朝桐光av一区二区三区| 在线精品视频免费播放| 麻豆传媒在线完整视频| 91精品国产综合久久久久久丝袜| 亚洲一级特黄| asian性开放少妇pics| 欧美日韩国产首页在线观看| 黄色网页在线免费看| 精品免费国产| 日韩电影在线看| 欧美人妻一区二区| 亚洲欧洲一区二区三区在线观看 | 天天影视久久综合| 国产精品一区二区三区四区五区 | 国产精品国产三级国产aⅴ入口 | 精品亚洲成a人在线观看| 美女视频黄免费| 亚洲欧美日韩中文在线| 成人豆花视频| 五十路熟女丰满大屁股| 日本一区二区久久| 亚洲精品无码专区| 国产精品久久久久久久7电影| 亚洲一区二区| 在线免费看黄视频| 欧美tickling挠脚心丨vk| 精品亚洲美女网站| 黄色成人在线免费观看| 中文字幕成人在线观看|