訊息交付可靠性保障
所謂的訊息交付可靠性保障,是指kafka對producer和consumer要處理的訊息提供什麼樣的承諾,常見三種如下:
最多一次(at most once):訊息可能會丟失,但絕不會被重**送。
只需要設定producer禁止重複即可。訊息要麼寫入成功,要麼寫入失敗,不會進行重試。
至少一次(at least once):訊息不會丟失,但有可能被重**送。
如果訊息成功提交,但是broker的應答沒有成功傳送會producer端,那麼producer就無法確定訊息是否真的提交成功,因此會進行重試。
精確一次(exactly once):訊息不會丟失,也不會被重**送。
kafka通過冪等性(idempotence)和事務(transaction)來保障精確一次。
冪等性(idempotence)
在kafka中,producer預設不是冪等性的,但我們可以建立冪等性的producer。它是0.11版本中引入的。設定方式:
props.put( "enable.idempotence", true );
但是它只能保證單分割槽上的冪等性,即乙個冪等性producer能夠保證某個主題的乙個分割槽上不出現重複訊息,它無法保證多個分割槽的冪等性。其次,它只能實現單會話上的冪等性,不會實現跨會話的冪等性。
事務(transcation)
設定事務型producer有2個要求:
使用inittransaction、begintransaction、committransaction和aborttransaction,進行事務初始化、開啟事務、事務提交及事務終止。
隔離級別設定
isolation.level引數
kafka設計之冪等性和事務
http 1.1中對冪等性的定義是 一次和多次請求某乙個資源對於資源本身應該具有同樣的結果 網路超時等問題除外 也就是說,其任意多次執行對資源本身所產生的影響均與一次執行的影響相同 實現冪等的關鍵點就是服務端可以區分請求是否重複,過濾掉重複的請求。要區分請求是否重複的有兩點 唯一標識 要想區分請求是...
Kafka生產者的冪等性和事務性
訊息交付可靠性保證,即指kafka對producer和consumer要處理的資訊的保證。最多一次 訊息可能會丟失,但絕對不會重複 至少一次 訊息不會丟失,但可能重複 精確一次 訊息不會丟失,也不會重 送 kafka預設對訊息的保證是至少一次 當然我們都希望精確一次。kafka同樣也提供了對精確一次...
kafka消費訊息時的冪等性
1.什麼是kafka消費訊息時的冪等性 kafka消費訊息時的冪等性,簡而言之就是消費者對介面的多次呼叫所產生的結果和呼叫一次是是一致的,也就是說在kafka中有可能會消費到重複的資料,這個時候需要客戶端去處理這種情況,使得訊息消費一次和消費多次是一樣的結果。2.產生原因 資料流 生產者 生產者會往...