Kafka存儲機制

Kafka之所以有那麼高的吞吐量,很大程度取決於它的存儲機制,一個主題可以有多個partition,每個partition有一個leader和多個副本,讀寫主要通過leader,副本的主要功能還是爲了保證數據的安全性和保證可靠性,當某個partition的leader出現異常後,剩餘副本可以選舉出新的leader;每個partition下面包含多個log文件和index文件,一對log文件和index文件組成一個segment,所以也可以理解爲一個partition包含多個segment,其中log文件存儲的是具體數據。

 

    kafka消息通過offset劃分爲多個segment,這樣一方面可以增加查詢效率,另一個方面也方便按照segment進行數據刪除,segment的劃分可以通過配置時間定期生成一個新的,也可以配置每個segment文件大小,達到設置閥值後生成一個新的segment。索引分爲全量索引和稀疏索引,區別就是一個是部分數據有索引,減少索引的存儲量。

 

 

    Kafka採用的是稀疏索引,索引文件裏面就兩列,一列存offset,另一列存position,比如(3,555)表示這個文件的第三條,在這個文件的第555個字節開始,通過二分查找可以很快的定位到文件。

 

 

    其中消息的存儲格式如下圖4、圖5

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章