- partition 分區作負載均衡(分佈在多個broker上),配合消費者組中的多個消費者進行消費提升讀寫併發度。
- replication 副本作topic數據備份冗餘。
分區內數據有序性,每一個分區都有本身的順序LEO(Log End Offset)併發
kafka中的消息是以topic做爲區分的,生產者生產消息和消費者消費消息都是面向topic的。負載均衡
以下圖的目錄:topic名稱-分區/(主題名稱test-topic-01,分區編號0)
ide
#日誌片斷文件最大爲1G,超過將要建立新的文件日誌
log.segment.bytes=1073741824
生產者生產的消息都會存放在分區的物理文件目錄(如test-topic-01-0)裏面的log文件中,當log文件過大時會致使定位效率低。code
- [x] kafka採起了 分片(segment)+索引(index) 的機制。
partition分區下面會分爲多個segment片斷(分片),每一個分片對應着.log和.index文件。
blog
log文件超過1G的時候會新建立一個log文件。索引
000000xxxxxx.log 的文件名錶示片斷中的消息的最大偏移量(LEO)
對應的索引文件也爲000000xxxxxx.indexkafka
經過二分查找法可以迅速定位某條消息。it
如上圖所示
log文件中的消息message-3對應的索引文件中的3的位置,記錄offset偏移量爲756和消息的長度。假如messgae-3的長度爲1000,那麼只須要在log文件中找到756~1756間的內容就是message-3的消息。io