RocketMQ消息零丟失方案


RocketMQ如何保證消息零丟失呢?

Producer消息零丟失的解決方案:

1、事務消息機制:使用事務消息能保證生產者一定會將消息寫入MQ,但是會降低吞吐量。

2、同步消息重試機制:發送同步消息,如果發生異常,則重試,如果重試超過一定次數仍然失敗,則可以先入庫,后續再補償。

 

Broker消息零丟失的解決方案:

1、同步刷盤:Broker的刷盤策略調整為同步刷盤,那么可以確保寫入MQ的消息一定是已經進入磁盤文件了,那么絕對不會因為機器宕機而丟失數據。

2、主從同步:采用主從架構的Broker集群,那么一條消息寫入成功,同時同步復制給其他Broker,此時任何一台機器的磁盤故障,數據也是不會丟失的。

以上兩步,就可以保證RocketMQ的服務集群消息零丟失。

 

Consumer消息零丟失的解決方案:

手動提交offset:只有正確處理了消息之后,才手動提交offset,通知Broker可以將消息刪除。

消息零丟失的方案看上去很完美,但是如果系統全鏈路采用了這套方案之后,會讓你整個從頭到尾的消息流轉鏈路的性能大幅度下降,讓你的MQ的吞吐量大幅度的下降。

所以,對於非核心的鏈路,其實沒有必要上這么重的解決方案,慎用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM