- 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