Kafka生產者的冪等性和事務性

2021-10-12 08:26:58 字數 752 閱讀 1343

訊息交付可靠性保證,即指kafka對producer和consumer要處理的資訊的保證。

最多一次:訊息可能會丟失,但絕對不會重複

至少一次:訊息不會丟失,但可能重複

精確一次:訊息不會丟失,也不會重**送

kafka預設對訊息的保證是至少一次

當然我們都希望精確一次。kafka同樣也提供了對精確一次的實現。主要有兩種分別是冪等生產者和事務型生產者

若開啟首先需要配置enable.idempotence = true,此時producer會變成冪等性producer。這個時候,當網路抖動,生產者沒有收到kafka返回的傳送成功響應,還是會再次傳送。但是kafka會根據訊息進行篩選,若具有相同字段值得訊息,則丟棄。

作用範圍

producer程序的一次執行,並且是單節點的

若啟用需要配置enable.idempotence=true

設定生產者的transactional.id

producer**需要顯示的使用事務的一些**

producer.inittransactions();    //初始化事務

try catch (kafkaexception e)

kafka即使回滾也會將訊息寫入到底層日誌中。因此consumer端若想讀取事務型的生產者,則需要配置isolation.level=read_committed,即只能看到事務型生產者的訊息和非事務性生產者的訊息

Kafka冪等性和事務

訊息交付可靠性保障 所謂的訊息交付可靠性保障,是指kafka對producer和consumer要處理的訊息提供什麼樣的承諾,常見三種如下 最多一次 at most once 訊息可能會丟失,但絕不會被重 送。只需要設定producer禁止重複即可。訊息要麼寫入成功,要麼寫入失敗,不會進行重試。至少...

kafka設計之冪等性和事務

http 1.1中對冪等性的定義是 一次和多次請求某乙個資源對於資源本身應該具有同樣的結果 網路超時等問題除外 也就是說,其任意多次執行對資源本身所產生的影響均與一次執行的影響相同 實現冪等的關鍵點就是服務端可以區分請求是否重複,過濾掉重複的請求。要區分請求是否重複的有兩點 唯一標識 要想區分請求是...

kafka同步生產者和非同步生產者深入剖析

什麼是kafka同步生產者,什麼是kafka非同步生產者?比如這裡某個topic有3個分割槽。kafka同步生產者 這個生產者寫一條訊息的時候,它就立馬傳送到某個分割槽去。kafka非同步生產者 這個生產者寫一條訊息的時候,先是寫到某個緩衝區,這個緩衝區裡的資料還沒寫到broker集群裡的某個分割槽...