【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

相关文章
相关标签/搜索