Log Segment:

--  一个Segment包含两个组件(component): log文件 和 index文件;

--  log文件记录的是真实的kafka message;

--  index文件记录的是message逻辑偏移量offset和物理文件位置之间的映射。

--  每个Segment有一个基本偏移量(baseOffset)

(1) Segment文件命名规则:

[base_offset].index 和 [base_offset].log (此处中括号仅用作描述)

示例:

[alex@Mars /home/alex/kafka/logs/sampleTopic-0]
$ls

00000000000000851449.log     00000000000000851449.index 

00000000000000866999.log     00000000000000866999.index

00000000000000882625.log     00000000000000882625.index

00000000000000898169.log     00000000000000898169.index 

00000000000000914106.log     00000000000000914106.index


(2)Segment添加消息规则:

 1> 每个offset负责定位“一定大小”的Kafka消息集合

 2> 这里所谓"一定大小", Kafka logSegment中用如下变量记录 : bytesSinceLastIndexEntry, 其字面含义很清晰的表明了它的作用: 记录自从上次

    添加一条index之后,在log文件中累计加入的message集合大小(bytes)

 3> 在试图append一条新消息(message)之前,先检查这个“一定大小”是否超过配置的规定值;

    若超过,则创建一条新的index记录并append至[BaseOffset].index:

    index记录的逻辑格式如下: offset---> 当前[BaseOffset].log文件大小(log.sizeInBytes)

    同时 bytesSinceLastIndexEntry 清零;

 4> Append新消息至[BaseOffset].log


Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐