查看: 590|回复: 0

[分享] Kafka-消息检索过程

[复制链接]
论坛徽章:
10
Oracle研习者初级
日期:2013-08-08 23:03:51Oracle研习者高级
日期:2013-11-12 16:28:09Oracle研习者高级
日期:2014-01-19 14:54:04Hadoop研习者初级
日期:2014-01-28 10:54:37spark徽章
日期:2017-03-09 16:41:36MongoDB徽章
日期:2016-11-03 17:35:24python徽章
日期:2016-07-15 12:04:23Hadoop研习者中级
日期:2014-09-19 14:13:17Oracle研习者初级
日期:2014-09-19 14:07:02spark徽章
日期:2018-05-03 15:46:21
发表于 2018-2-9 17:33 | 显示全部楼层 |阅读模式

Kafka

以这个partition目录下面,00000000001560140916为例
定位offset 为1560140921的message
1. 定位到具体的segment日志文件
由于log日志文件的文件名是这个文件中第一条消息的offset-1.
因此可以根据offset定位到这个消息所在日志文件:00000000001560140916.log
2. 计算查找的offset在日志文件的相对偏移量
segment文件中第一条消息的offset = 1560140917
计算message相对偏移量:需要定位的offset - segment文件中第一条消息的offset + 1 = 1560140921 -
1560140917 + 1 = 5
查找index索引文件, 可以定位到该消息在日志文件中的偏移字节为456.
综上, 直接读取文件夹00000000001560140916.log中偏移456字节的数据即可。
1560140922 -1560140917 + 1 = 6
如果查找的offset在日志文件的相对偏移量在index索引文件不存在, 可根据其在index索引文件最接近的上限
偏移量, 往下顺序查找

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

 

GMT+8, 2018-9-21 06:19 , Processed in 0.113511 second(s), 29 queries .