主要观点:
- Apache Kafka 处理存储记录时像提交日志,记录依次追加到每个日志末尾,日志还按段分割,段有助于删除旧记录等,Broker 配置可调整与日志相关参数。
- 不同日志清理策略(
delete
和compact
)对 Broker 行为影响不同,delete
策略下要了解日志分段和记录保留对 Broker 性能的影响。 - Kafka 主题分区在磁盘上按分区存储记录,每个分区进一步分割为段,段包含实际文件,如
.log
、.index
、.timeindex
、.snapshot
等,活动段用于读写,非活动段只读。 - 分区内索引工作方式:
.index
文件将逻辑偏移映射到记录在.log
文件中的字节偏移,log.index.interval.bytes
参数决定索引添加频率,可影响记录搜索速度;.timeindex
文件根据时间戳和偏移对记录进行索引。 - 段会在达到最大段大小(
log.segment.bytes
)、经过生产者时间戳指定时间(log.roll.ms
或log.roll.hours
)或索引(或时间索引)满时滚动,log.roll.jitter.ms
可避免段同时滚动,索引和时间索引大小会影响段滚动。 - 记录保留时间可通过
log.retention.bytes
(按字节)或log.retention.ms
等参数配置,实际保留时间可能比预期长,因为段关闭才删除,且清理线程检查删除有延迟,这对消费者影响不大但会影响磁盘使用。
关键信息:
- 各文件作用:
.log
存储记录,.index
映射逻辑偏移到字节偏移,.timeindex
按时间戳索引,.snapshot
存储生产者状态。 - 索引相关参数:
log.index.interval.bytes
默认 4096 字节,影响索引添加频率;.timeindex
每个条目 12 字节,反映记录发送时间间隔。 - 段滚动条件:最大段大小、生产者时间戳、索引(或时间索引)满,
log.roll.jitter.ms
避免同时滚动,索引和时间索引大小与段大小相关。 - 记录保留:
log.retention.bytes
按字节,log.retention.ms
等按时间,实际保留时间受段关闭和清理线程检查延迟影响。
重要细节:
- Strimzi Canary 组件示例中各文件内容及分区结构。
- 不同配置下段、索引、时间索引的大小及相关记录情况。
- 记录保留时间计算示例及实际可能的保留时长。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。