kafka是分布式訊息系統,需要處理海量的訊息,kafka的設計是把所有的訊息都寫入速度低容量大的硬碟,以此來換取更強的儲存能力,但實際上,使用硬碟並沒有帶來過多的效能損失。kafka主要使用了以下幾個方式實現了超高的吞吐率
順序讀寫
kafka的訊息是不斷追加到檔案中的,這個特性使kafka可以充分利用磁碟的順序讀寫效能順序讀寫不需要硬碟磁頭的尋道時間,只需很少的扇區旋轉時間,所以速度遠快於隨機讀寫
零拷貝
先簡單了解下檔案系統的操作流程,例如乙個程式要把檔案內容傳送到網路,這個程式是工作在使用者空間,檔案和網路socket屬於硬體資源,兩者之間有乙個核心空間在作業系統內部,整個過程為:
在linux kernel2.2 之後出現了一種叫做」零拷貝(zero-copy)」系統呼叫機制,就是跳過「使用者緩衝區」的拷貝,建立乙個磁碟空間和記憶體的直接對映,資料不再複製到「使用者態緩衝區」系統上下文切換減少為2次,可以提公升一倍的效能
檔案分段
kafka的佇列topic被分為了多個區partition,每個partition又分為多個段segment,所以乙個佇列中的訊息實際上是儲存在n多個片段檔案中通過分段的方式,每次檔案操作都是對乙個小檔案的操作,非常輕便,同時也增加了並行處理能力
批量傳送
kafka允許進行批量傳送訊息,先將訊息快取在記憶體中,然後一次請求批量傳送出去比如可以指定快取的訊息達到某個量的時候就發出去,或者快取了固定的時間後就傳送出去如100條訊息就傳送,或者每5秒傳送一次這種策略將大大減少服務端的i/o次數
資料壓縮
Kafka是如何實現高吞吐率的
kafka是分布式訊息系統,需要處理海量的訊息,kafka的設計是把所有的訊息都寫入速度低容量大的硬碟,以此來換取更強的儲存能力,但實際上,使用硬碟並沒有帶來過多的效能損失 kafka主要使用了以下幾個方式實現了超高的吞吐率 順序讀寫 kafka的訊息是不斷追加到檔案中的,這個特性使kafka可以充...
Kafka的高吞吐
kafka誕生於linkin公司。當時linkin需要對使用者和 上產生的活動資料進行處理,什麼是活動資料呢?比如頁面訪問量 使用者行為 搜尋情況等,對這些資料的分析將被應用於廣播 排序 個性化 推薦 運營監控等。這類資料有個特點,需要實時處理,最好當下使用者的一些行為資料能馬上被後台感知 計算,並...
Kafka (十)Kafka 如何實現高吞吐量
kafka的訊息是不斷追加到檔案中的,這個特性使kafka可以充分利用磁碟的順序讀寫效能 順序讀寫不需要硬碟磁頭的尋道時間,只需很少的扇區旋轉時間,所以速度遠快於隨機讀寫 生產者負責寫入資料,kafka會將訊息持久化到磁碟,保證不會丟失資料,kafka採用了倆個技術提高寫入的速度。1.順序寫入 在大...