国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

三分鐘白話RocketMQ系列—— 如何保證消息不丟失

開發 前端
如果在嘗試消費的過程中達到了最大重試次數(通常為16次),仍然無法成功消費,則消息將被發送到死信隊列,以確保消息存儲的可靠性。后續業務可以根據死信隊列,來做相關補償措施。

回顧上一篇核心概念,我們知道RocketMQ的消息模型分為 生產、存儲(消息堆積)、消費 三大部分。

消息模型三大部分

因此,如何保證消息不丟失,也是從這三個環節來考慮。

關鍵字摘要

  • 生產、存儲(消息堆積)、消費 三個環節保證消息不丟失
  • 生產環節:消息類型,消息確認機制、失敗重試機制
  • 存儲環節:同步/異步刷盤、同步/異步復制slave
  • 消費環節:消息確認機制(至少消費成功一次)、失敗重試機制、死信隊列機制

Q1: 如何保證「消息生產」不丟失?

先想想什么情況下,消息生產會丟失消息呢?

生產者將發送消息時,如果出現了網絡抖動或者通信異常等問題,消息就有可能會丟失。

那怎么解決這個問題?

其實思路是比較直接的,就是 「消息確認機制」和「失敗重試機制」。

消息發送成功返回確認消息,那就能確保消息不丟失。如果發送失敗了,mq-client就嘗試自動重試,避免網絡抖動導致發送丟失。

如果超過一定超時時間還是失敗,那就拋出異常,由開發者自己在應用層面進行處理,手動重試發送 或者 記錄失敗消息后續補償。

不過我們需要特別注意是,RocketMQ支持多種「消息類型」,但是并不是對所有「消息類型」 都會有「消息確認機制」和「失敗重試機制」。

RocketMQ生產消息時,支持多種「消息類型」和「消息發送模式」。咱們白話為主,就不展開源碼了,有興趣同學可以參考org.apache.rocketmq.client.producer.MQProducer這個接口定義即可。

消息類型:

  • 普通消息:發送普通消息,異常時默認重試。
  • 普通有序消息:發送普通有序消息,通過指定「消息篩選器selector」,動態決定發送哪個隊列。異常默認不重試,可以用戶自己重試,并發送到其他隊列。
  • 嚴格有序消息:發送嚴格有序消息,通過指定隊列,保證嚴格有序,異常默認不重試。

消息發送模式:

  • 同步:調用發送消息方法后,同步阻塞,直到返回SendResult。配置retryTimesWhenSendFailed重試次數。
  • 異步:調用發送消息方法后,立即返回,發送結果會通過開發者自己注冊的回調函數SendCallback進行處理。配置retryTimesWhenSendAsyncFailed重試次數。
  • 單向發送:這種方法完全不關心發送后的返回結果。顯然,它具有最大吞吐量,但也存在消息丟失的潛在風險。

消息類型 和 消息發送模式 是 N * M 的關系,所以聰明的你一定已經想到了,存在9種不同組合,RocketMQ也是定義了9種不同接口方法。

這9種方法里面,涉及到「單向發送」模式的3種方法,都是不可靠的,存在丟失消息的風險。其他發送消息的模式和消息類型,可以通過 消息確認、mq-client自動「失敗重試機制」、業務自定義重試 等方式,確保消息發送不丟失。

注意,org.apache.rocketmq.client.producer.MQProducer還定義了「事務消息」的發送模式,是屬于分布式事務范疇了,跟我們這里討論的消息不丟失不太一樣,就不展開討論了。后面單獨寫一篇針對「事務消息」的分析。

Q2: 如何保證「消息存儲」不丟失?

先想想什么情況下,消息存儲會丟失呢?

場景1,消息保存到內存中,還沒來得及刷盤到磁盤,機器宕機或者重啟,導致內存中消息丟失。場景2,為了提高可用性,Broker通常采用一主多從的部署方式,為了確保消息不丟失,消息需要被復制到從節點。當消息發送到master但是還沒同步到slave broker時,master broker磁盤損壞,導致消息數據丟失。或者master宕機,consumer切換到slave消費數據,消息丟失。

針對場景1,默認情況下,消息在到達 Broker 端后會首先被保存在內存中,并立即向生產者返回確認響應。隨后,Broker 會定期批量將一組消息異步刷入磁盤。這種方式減少了 I/O 操作次數,提高了性能。

然而,如果發生機器掉電、異常宕機等情況,未及時將消息刷入磁盤,就可能導致消息丟失的情況。

如果要確保 Broker 端不丟失消息并保證消息的可靠性,我們需要修改消息保存機制為同步刷盤方式,即只有當消息成功存儲到磁盤后才返回響應。可以通過flushDiskType = SYNC_FLUSH 參數進行控制。

針對場景2,在默認方式下,當消息成功寫入主節點時,就會返回確認響應給生產者,并異步將消息復制到從節點。然而,如果主節點突然宕機且無法恢復,尚未復制到從節點的消息將會丟失。

為了進一步提高消息的可靠性,我們可以采用同步復制方式。主節點將會同步等待從節點完成復制,然后才返回確認響應。這樣可以確保消息的可靠性。可以通過brokerRole=SYNC_MASTER參數進行控制。

注意,同步刷盤 和 同步復制 雖然能夠保證消息不丟失,但是會嚴重降低性能,生產實踐中需要根據實際情況綜合評估。

Q3: 如何保證「消息消費」不丟失?

先想想什么情況下,消息存儲會丟失呢?

因為各種原因消費失敗,但是還是提交了消費位點,這條消息從業務角度來說就“丟失”了。

那怎么解決這個問題?

跟消息生產一樣,其實思路是比較直接的,就是 「消息確認機制」和「失敗重試機制」。

消費者從RocketMQ拉取消息后,需要返回"CONSUME_SUCCESS"來表示業務方已經正常完成消費。只有返回"CONSUME_SUCCESS"才算作消費完成。這就是消費時的「消息確認機制」。

如果返回"CONSUME_LATER",則會按照不同的消息延遲級別進行再次消費,延遲級別從秒到小時不等,最長延遲時間為2個小時后再次嘗試消費。這就是消費時的「失敗重試機制」。

重試消息會被存入名為 "%RETRY%+消費組名稱" 的Topic中,原始主題Topic會存入屬性中。然后會基于定時任務機制,在到期時將任務再次拉取出來。

另外,RocketMQ跟kafka不同的是,天然支持了 「死信隊列機制」。

如果在嘗試消費的過程中達到了最大重試次數(通常為16次),仍然無法成功消費,則消息將被發送到死信隊列,以確保消息存儲的可靠性。后續業務可以根據死信隊列,來做相關補償措施。

關鍵字總結

  • 生產、存儲(消息堆積)、消費 三個環節保證不丟失
  • 生產環節:消息類型,消息確認機制、失敗重試機制
  • 存儲環節:同步/異步刷盤、同步/異步復制slave
  • 消費環節:消息確認機制(至少消費成功一次)、失敗重試機制、死信隊列機制

3分鐘到了嗎?應該對RocketMQ如何生產消息有全面了解了吧。如果還想了解更多,歡迎關注下一期內容。

責任編輯:武曉燕 來源: 阿丸筆記
相關推薦

2023-09-21 09:02:03

RocketMQ全局有序局部有序

2023-08-01 09:01:51

Broker? 事務消息selector

2023-08-14 09:16:26

消息存儲磁盤

2023-08-24 09:01:25

消息拉取RocketMQ

2023-07-25 09:00:27

RocketMQ開源

2024-04-01 09:59:08

消息隊列通信微服務

2024-09-13 08:49:45

2024-05-16 11:13:16

Helm工具release

2024-08-06 09:55:25

2024-12-18 10:24:59

代理技術JDK動態代理

2009-11-09 12:55:43

WCF事務

2021-04-20 13:59:37

云計算

2024-08-30 08:50:00

2024-01-16 07:46:14

FutureTask接口用法

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2023-12-27 08:15:47

Java虛擬線程

2020-06-30 10:45:28

Web開發工具

2013-06-28 14:30:26

棱鏡計劃棱鏡棱鏡監控項目

2025-10-27 01:35:00

2021-12-17 07:47:37

IT風險框架
點贊
收藏

51CTO技術棧公眾號

在线播放你懂的| 丰满少妇被猛烈进入高清播放| 91吃瓜网在线观看| bt7086福利一区国产| 日韩av电影中文字幕| 手机av在线| 成人高清免费在线播放| 日本一区二区三区中文字幕| 欧美在线观看一区| 在线观看成人影院| 国内精品不卡在线| 2020国产精品久久精品不卡| 成人激情久久| 亚洲国产日韩欧美在线动漫| 水莓100国产免费av在线播放| 2020国产精品| 欧美日韩日本网| 欧美美乳视频| 欧美xxxx综合视频| 伊人色综合一区二区三区影院视频| 第一福利永久视频精品| 99re在线视频播放| 97久久精品人人澡人人爽| 亚洲国产精品一区在线观看不卡 | 红桃成人av在线播放| 色婷婷成人综合| 岛国av在线网站| 欧美日韩精品欧美日韩精品| 日本18视频网站| 国产精品乱码一区二三区小蝌蚪| 中文字幕精品在线播放| 国产欧美日韩综合一区在线播放| 国产精品高潮在线| 亚洲免费成人av在线| 欧美激情亚洲视频| 国产精品成人**免费视频| 一区国产精品视频| 欧美精品日日操| 日韩精品一区二区三区第95| 宅男在线观看免费高清网站| 亚洲成年人影院| 亚洲日本伦理| 色综合久久天天| 日本啊v在线| 在线观看中文字幕不卡| 精品影院一区| 欧美日韩国产美| 呦呦在线视频| 日韩欧美国产1| 欧美三级网站| 中文字幕精品—区二区| 日韩欧美三区| 久久精品国产69国产精品亚洲| 亚洲日本天堂| 亚洲美女免费精品视频在线观看| 美洲精品一卡2卡三卡4卡四卡| 精品久久久久av影院| 97人澡人人添人人爽欧美| 亚洲精品一区中文| 高清不卡一区| 国产精品wwwwww| 欧美日韩一视频区二区| 免费看污久久久| 精品在线免费观看| 日本黄色三级大片| 亚洲精品欧美激情| 三级黄视频在线观看| 日韩一级免费观看| 欧美韩国日本| 国产精品久久久久久影视 | 青青久久精品| 欧美精品videosex牲欧美| 精品国产网站| 热舞福利精品大尺度视频| 久久精品成人欧美大片| 精品国产青草久久久久福利| 亚洲一区有码| 欧美不卡三区| 国产成人精品免费看| 妞干网在线免费视频| 在线观看欧美黄色| 国产三级在线| 国内精品视频在线| 亚洲国产成人tv| 国产伦精品一区二区三区免费迷| 99草草国产熟女视频在线| 欧美日韩国产中文精品字幕自在自线| 国产三级视频| 欧美一区二区免费| 日韩午夜激情| sis001亚洲原创区| 久久免费一级片| 亚洲国产99| 日韩在线国产精品| 欧美日韩国产精品一区二区三区四区| 国产一区亚洲| 福利影院在线看| 六月丁香婷婷激情| 亚洲一区二区三区四区在线播放| 欧美成人一区二区三区片免费| 久久先锋影音av| 午夜精品久久久久久久四虎美女版| 五月香视频在线观看| 色综合小说天天综合网| 91免费观看| 黄网站色欧美视频| 亚洲国产精品日韩专区av有中文| 91在线精品| 国自在线精品视频| 欧美日在线观看| 今天的高清视频免费播放成人| 日韩精品系列| 超碰97在线资源| 欧美不卡一区二区| 懂色一区二区三区免费观看| аⅴ资源新版在线天堂| 久久久日本电影| 99久久婷婷国产| 2019中文字幕在线电影免费| 草裙成人精品一区二区三区| 四色永久网址| 4k岛国日韩精品**专区| 秋霞成人午夜伦在线观看| 欧美做受高潮1| 激情欧美日韩| 神马久久精品| 97国产精品视频| 久久久国产综合精品女国产盗摄| 性感女国产在线| 在线免费黄色毛片| 日日摸天天爽天天爽视频| 91精品视频在线看| 久久免费福利视频| 新欧美整片sss第一页| 日本精品免费观看高清观看| 好了av在线| 国产精品入口尤物| 中文在线资源观看网站视频免费不卡| 自拍偷拍在线视频| 欧美老年两性高潮| 1024国产在线| 国内成人精品一区| 首页亚洲中字| 国产成人高清激情视频在线观看| 欧亚精品一区| 亚洲精品在线免费看| 最新国产成人在线观看| 久久大胆人体视频| 在线视频成人| 成人黄色理论片| 日韩精品三级| 国产美女视频一区二区| 高清不卡一区| 在线精品视频一区| 国产亚洲一区二区三区不卡| 奇米亚洲欧美| 国产欧美日本| 久久国产精品露脸对白| 99国产精品久久久久久久| 欧美在线影院| 色777狠狠狠综合伊人| 日韩av在线播放网址| 日韩理论电影中文字幕| 高清av一区二区三区| 成人免费观看在线观看| 视频一区二区三区不卡| 成人在线视频成人| 菠萝菠萝蜜在线视频免费观看| av基地在线| www.视频在线.com| 1区2区在线观看| 国产免费福利| 欧美一级片中文字幕| 国产手机精品在线| 九七影院理论片| 免费精品一区| 99爱在线观看| 99re精彩视频| 毛片在线视频观看| 干日本少妇首页| 五月婷婷之综合激情| 亚洲天堂1区| 不卡一区二区三区四区五区| av在线成人| 亚洲va久久久噜噜噜久久| 动漫av一区| 国产精品香蕉| 国产激情一区二区三区在线观看| 午夜精品爽啪视频| 天天射成人网| jizz性欧美10| 国产一级做a爰片久久毛片男| 色av中文字幕一区| 亚洲靠逼com| 亚洲黄页一区| 日韩天堂在线| 国产宾馆自拍| 日韩一区二区三区高清| 日韩在线免费视频| 亚洲资源中文字幕|