【kafka】kafka消息的存儲(分片+索引)

  • partition 分區作負載均衡(分佈在多個broker上),配合消費者組中的多個消費者進行消費提升讀寫併發度。
  • replication 副本作topic數據備份冗餘。

分區內數據有序性,每一個分區都有本身的順序LEO(Log End Offset)併發

【kafka】kafka消息的存儲(分片+索引)

kafka中的消息是以topic做爲區分的,生產者生產消息和消費者消費消息都是面向topic的。負載均衡

  • topic是邏輯上的概念
  • partition是物理上的概念

以下圖的目錄:topic名稱-分區/(主題名稱test-topic-01,分區編號0)
【kafka】kafka消息的存儲(分片+索引)ide

#日誌片斷文件最大爲1G,超過將要建立新的文件日誌

log.segment.bytes=1073741824

生產者生產的消息都會存放在分區的物理文件目錄(如test-topic-01-0)裏面的log文件中,當log文件過大時會致使定位效率低。code

- [x] kafka採起了 分片(segment)+索引(index) 的機制。

partition分區下面會分爲多個segment片斷(分片),每一個分片對應着.log和.index文件。
【kafka】kafka消息的存儲(分片+索引)blog

log文件超過1G的時候會新建立一個log文件。索引

【kafka】kafka消息的存儲(分片+索引)

000000xxxxxx.log 的文件名錶示片斷中的消息的最大偏移量(LEO)
對應的索引文件也爲000000xxxxxx.indexkafka

經過二分查找法可以迅速定位某條消息。it

如上圖所示
log文件中的消息message-3對應的索引文件中的3的位置,記錄offset偏移量爲756和消息的長度。假如messgae-3的長度爲1000,那麼只須要在log文件中找到756~1756間的內容就是message-3的消息。io

相關文章
相關標籤/搜索