Kafka源代码解析 --- Log Segment

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值