kafka
的索引文件以稀疏索引的方式构造消息的索引,每个 segmentfault
文件,对应 2 个索引文件。偏移量索引文件(xx.index)用于建立消息偏移量到物理地址之间的映射关系;时间戳索引文件(xx.timeindex)根据指定的时间戳查找对应的偏移量信息。
.index、.timeindex
均保持严格单调递增,在查找时,都使用二分查找法,如果查不到,均返回比查找值要小的最大值。
日志切分
当日志分段文件满足以下几个条件任意之一,便会切分索引文件
kafka
的索引文件以稀疏索引的方式构造消息的索引,每个 segmentfault
文件,对应 2 个索引文件。偏移量索引文件(xx.index)用于建立消息偏移量到物理地址之间的映射关系;时间戳索引文件(xx.timeindex)根据指定的时间戳查找对应的偏移量信息。
.index、.timeindex
均保持严格单调递增,在查找时,都使用二分查找法,如果查不到,均返回比查找值要小的最大值。
当日志分段文件满足以下几个条件任意之一,便会切分索引文件
kafka
允许通过配置 partition.assignment.strategy
来改变消费组的分区策略。kafka
提供了以下几个分区策略
RangeAssignor
RoundRobinAssignor
StickyAssignor
默认使用的是 RangeAssignor
同时,kafka
也允许我们自定义分区策略,只需要继承 AbstractPartitionAssignor
抽象类即可。
1 | Properties prop = new Properties(); |
bootstrap.servers
该参数为 broker
地址,不需要全部都填,因为 kafka
会从当前 broker
中获取其他 broker
信息。不过为了某个 broker
挂掉,一般填多个 broker
地址
key.serializer
1 | version: '2' |