kafka文件存储与定位数据的原理
< 返回列表时间: 2019-09-22来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
kafka的相对offset
每个分区的文件存储在各自分区的目录中。
每个分区的offset都从1开始。
每个分区将数据切分成多个segment(段), 每个段对应了两个文件:log和index
第一组命名为:00000000000000000000.index和00000000000000000000.log 。
从第二组开始, 文件名是上一组最后一条消息的offset。
log文件是以追加的方式存储。index文件存储的是稀疏索引, 并没有存储所有日志的偏移量。
如何寻找某offset的消息?
如, 寻找offset为2019的消息: 二分法, 寻找到文件名<=2019的最大segment文件。
如找到了名为2000的文件。 2019-2000=19。在对应的index文件中寻找<=19的最大相对offset。
如,找到了15,300 去对应的log文件中寻找到300pos(第15条), 并按顺序读到第19条消息即可。
热门排行