打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Kafka存储机制探索 大数据开发

  kafka通过topic来分主题存放数据,主题内有分区,分区可以有多个副本,分区的内部还细分为若干个segment。

  所谓的分区其实就是在kafka对应存储目录下创建的文件夹,文件夹的名字是主题名加上分区编号,编号从0开始。

  一、segment

  所谓的segment其实就是在分区对应的文件夹下产生的文件。

  一个分区会被划分成大小相等的若干segment,这样一方面保证了分区的数据被划分到多个文件中保证不会产生体积过大的文件;另一方面可以基于这些segment文件进行历史数据的删除,提高效率。

  一个segment又由一个.log和一个.index文件组成。

  1..log

  .log文件为数据文件用来存放数据分段数据。

  2..index

  .index为索引文件保存对对应的.log文件的索引信息。

  在.index文件中,保存了对对应.log文件的索引信息,通过查找.index文件可以获知每个存储在当前segment中的offset在.log文件中的开始位置,而每条日志有其固定格式,保存了包括offset编号、日志长度、key的长度等相关信息,通过这个固定格式中的数据可以确定出当前offset的结束位置,从而对数据进行读取。

  3..命名规则

  这两个文件的命名规则为:

  partition全局的第一个segment从0开始,后续每个segment文件名为上一个segment文件最后一条消息的offset值,数值大小为64位,20位数字字符长度,没有数字用0填充。

  二、读取数据

  开始读取指定分区中某个offset对应的数据时,先根据offset和当前分区的所有segment的名称做比较,确定出数据在哪个segment中,再查找该segment的索引文件,确定当前offset在数据文件中的开始位置,最后从该位置开始读取数据文件,在根据数据格式判断结果,获取完整数据。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
搞透 Kafka 的存储架构,看这篇就够了
消息中间件
《Druid实时大数据分析原理》(3)
Redis、Kafka 和 Pulsar 消息队列对比
Spark版本定制班第4课-Frank
KAFKA:如何做到1秒发布百万级条消息
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服