kafka如何保證訊息不丟失

2021-10-01 02:05:54 字數 690 閱讀 4380

a:消費端弄丟了資料

關閉自動提交offset,在自己處理完畢之後手動提交offset,這樣就不會丟失資料。

b:kafka弄丟了資料

一般要求設定4個引數來保證訊息不丟失:

①給topic設定replication.factor引數:這個值必須大於1,表示要求每個partition必須至少有2個副本。

②在kafka服務端設定min.isync.replicas引數:這個值必須大於1,表示 要求乙個leader至少感知到有至少乙個follower在跟自己保持聯絡正常同步資料,這樣才能保證leader掛了之後還有乙個follower。

③在生產者端設定acks=all:表示 要求每條每條資料,必須是寫入所有replica副本之後,才能認為是寫入成功了

④在生產者端設定retries=max(很大的乙個值,表示無限重試):表示 這個是要求一旦寫入事變,就無限重試

c:生產者弄丟了資料

如果按照上面設定了ack=all,則一定不會丟失資料,要求是,你的leader接收到訊息,所有的follower都同步到了訊息之後,才認為本次寫成功了。如果沒滿足這個條件,生產者會自動不斷的重試,重試無限次。

如何保證kafka訊息不丟失

這裡的kafka值得是broker,broker訊息丟失的邊界需要對齊一下 1 已經提交的訊息 2 有限度的持久化 如果訊息沒提交成功,並不是broke丟失了訊息 有限度的持久化 broker可用 producer.send object msg 這個傳送訊息的方式是非同步的 fire and fo...

kafka保證訊息不丟失

一 消費端保證訊息不丟失 消費端從broker取到訊息以後,先處理業務邏輯,然後再手動提交,這樣就可以避免消費端訊息丟失。二 生產端訊息不丟失 首先是設定每個訊息分割槽的副本,一本是幾個broker就配置幾個分割槽,然後設定如下,保證生產這生產的訊息傳送到broker時,不但leader確認收到訊息...

kafka如何保證訊息不丟失不被重複消費

在解決這個問題之前,我們首先梳理一下kafka訊息的傳送和消費機制。kafka的訊息傳送機制分為同步和非同步機制。可以通過producer.type屬性進行配置。使用同步模式的時候,有三種狀態來保證訊息的安全生產。可以通過配置request.required.acks屬性。三個屬性分別如下 當ack...