kafka使用索引查找message

111 篇文章 1 订阅
22 篇文章 1 订阅
本文解析了Kafka中的offset概念,它如何指示消息在分区中的位置,以及log和index文件的作用与结构。重点介绍了如何通过offset查找和定位具体消息的过程,包括二分查找在索引和log文件中的应用。
摘要由CSDN通过智能技术生成

1.offset:一种逻辑概念,类似C语言数组的索引号,每个offset记录了消息在具体分区的位置,offset对应物理上的地址,如offset=1对应的物理地址是2809,即相应分区的第2809个字节;

2.offset不是全局递增,只是在单个分区内单调递增;

3.message结构:offset+字节大小+具体消息

4..log和.index文件,.log文件记录了message,.index文件是.log文件的索引文件,它们在kafka配置项server.properties/log.dirs定义:

5.log和.index文件命名:形如00000000000000000000.index,00000000000000000000.log,index和log文件前缀的offset。

6.logSegment:创建几个分区,就会有几个目录,如创建test1,3分区的topic,那么kafka-logs目录下就会有三个子目录,如下所示:

分区由若干个logSegment组成,如00000000000000000000.index,00000000000000000000.log,00000000000000002307.index,00000000000000002307.log等。

7.根据offset查找具体message

(1)根据offset使用二分查找定位具体的索引文件(索引文件前缀有offset);

(2)在具体的索引文件使用二分查找,用offset找到相应的物理地址;

(3)到索引对应的log文件使用顺序扫描找到具体消息。

在index文件中,左边第一列是offset,右边对应是物理地址,都是递增排序,log文件每条消息物理地址也是递增。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值