Kafka 如何實現 Exactly Once

2021-10-11 20:46:39 字數 428 閱讀 6978

流式系統中最重要的保證:exactly once,即訊息不會丟失,也不會被重**送

在 kafka 0.11 之前,開啟重試機制只能保證資料不丟失,但是資料有可能有重複

在 kafka 0.11 之後,可以實現資料的精準一次,它能保證多條訊息原子性地寫入到目標分割槽,即要不一起成功,要不都失敗

主要靠兩點:

開啟事務型 producer 需要做以下 3 點:

producer.

inittransactions()

;try

catch

(kafkaexception e)

設定isolation.level = read_committed,表明 consumer 只會讀取事務型 producer 成功提交事務寫入的訊息

Kafka (十)Kafka 如何實現高吞吐量

kafka的訊息是不斷追加到檔案中的,這個特性使kafka可以充分利用磁碟的順序讀寫效能 順序讀寫不需要硬碟磁頭的尋道時間,只需很少的扇區旋轉時間,所以速度遠快於隨機讀寫 生產者負責寫入資料,kafka會將訊息持久化到磁碟,保證不會丟失資料,kafka採用了倆個技術提高寫入的速度。1.順序寫入 在大...

Kafka如何實現高效能IO?

雖然kafka的sdk提供了單條訊息傳送,但實際上,kafka 的客戶端 sdk 在實現訊息傳送邏輯的時候,採用了非同步批量傳送的機制 當你呼叫 send 方法傳送一條訊息之後,無論你是同步傳送還是非同步傳送,kafka 都不會立即就把這條訊息傳送出去。它會先把這條訊息,存放在記憶體中快取起來,然後...

Kafka如何實現高效能IO?

雖然kafka的sdk提供了單條訊息傳送,但實際上,kafka 的客戶端 sdk 在實現訊息傳送邏輯的時候,採用了非同步批量傳送的機制 當你呼叫 send 方法傳送一條訊息之後,無論你是同步傳送還是非同步傳送,kafka 都不會立即就把這條訊息傳送出去。它會先把這條訊息,存放在記憶體中快取起來,然後...