kafka高吞吐量,為什麼這麼快!

2021-10-24 19:15:31 字數 1341 閱讀 2508

kafka有個很重要的特性,高速的傳送和接收訊息,超高的吞吐量。這裡來討論一下kafka超高的吞吐量原理:

1. 寫:
頁面快取,順序寫入磁碟。

producer ------生產訊息----->broker

會先將資料先寫入到頁面快取(page cache)(基於mmap) ----刷盤---》 順序寫入到磁碟(順序寫入比隨機的ssd更快)

broker基於mmap技術,即記憶體對映檔案,將訊息先寫入到作業系統的頁快取中

2. 讀:
零拷貝技術

dma將資料載入到核心緩衝區, ----sendfile 將核心緩衝區的資料直接傳送。

3. partition。
乙個topic可以有多個partition,並行處理資料。
4. 批量處理,資料壓縮。
producer  ----------生產訊息-------->broker

可以設定一定的訊息數量 或者時間間隔 再傳送資料。減少網路互動。

頻寬壓力大可以對資料進行壓縮。

詳細解析 讀 和 寫操作。

零拷貝並不是說沒有一次拷貝,而是減少拷貝的次數。

在消費者模型中,kafka讀取訊息傳送訊息:

傳統的io方式(4次 copy過程):

1.將磁碟------》作業系統核心緩衝區。

4.socket buffer -------》網絡卡(由網絡卡進行傳送)。

kafka io讀取模型:

1.應用指定需要傳輸的檔案控制代碼和呼叫sendfile	(系統呼叫)

2.作業系統在核心讀取磁碟檔案拷貝到頁快取。 (copy)

3.將頁快取拷貝到網絡卡。 (copy)

簡稱mmap,簡單描述其作用就是:將磁碟檔案對映到記憶體, 使用者通過修改記憶體就能修改磁碟檔案。

mmap之所以能有效提高kafka的吞吐量,是因為其在進行log檔案讀取的時候直接將log檔案讀入使用者態進行快取,繞過了核心態的page cache,避免了核心態和使用者態的切換過程

參考:kafka dma,mmap,零拷

kafka高吞吐量的原因

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

kafka吞吐量高的原因

1 順序讀寫 基於磁碟的隨機讀寫確實很慢,但磁碟的順序讀寫效能卻很高,一些情況下磁碟順序讀寫效能甚至要高於記憶體隨機讀寫。kafka的message是不斷追加到本地磁碟檔案末尾的,而不是隨機的寫入,這使得kafka寫入吞吐量得到了顯著提公升 2 page cache 為了優化讀寫效能,kafka利用...

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

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