Kafka文件存储机制

Topic是逻辑上的概念,而partition是物理上的概念,每个partition对应于一个log文件,该log文件中存储的就是Prodcuer生产的数据,Producer生产的数据会被不断追加到该log文件末端,为防止log文件过大导致数据定位效率低下,Kafka采取了分片和索引机制,将每个partition分为多个segment,每个segment包括:".index文件"".log"文件和.timeindex等文件,这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号,例如first-0,(server.properties文件里面log.dirs的路径下可以找到该文件夹)

一个topic分为多个partition

一个partition分为多个segment

一个segment由如下部分组成:

.log 日志文件(存储实际数据)
.index 偏移量索引文件
.timeindex 时间戳索引文件

其他文件

说明:indexlog文件以当前segment的第一条消息的offset命名

这里的配置如下:

查看文件:

查看topic为four,0号分区的数据

直接查看log日志和index文件是乱码

可以通过工具查看indexlog信息

c 复制代码
kafka-run-class.sh kafka.tools.DumpLogSegments --files 00000000000000000000.index

注意:
index为稀疏索引,大约每往log文件写入4kb数据,会往index文件写入一条索引,参数log.index.interval.bytes默认为4kb

index文件中保存的offset为相对offset,这样能确保offset的值所占空间不会过大,因此能将offset的值控制在固定大小

  1. 根据目标offset定位segment文件
  2. 找到小于等于目标offset的最大offset对应的索引项
  3. 定位到log文件
  4. 向下遍历找到目标Record

创建topic

创建生产者:

创建生产者:

生产并消费数据

查看数据:

相关推荐
运维行者_9 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
jeffwang11 小时前
我把同一个压测做错了三次,第四次才发现真正的瓶颈
分布式·性能优化·rust
Blossom i11 小时前
分布式编程实验二:Flink安装与编程实践(头歌云客)
大数据·分布式·flink
ai_coder_ai11 小时前
事件驱动架构(EDA)在分布式业务系统中的应用
分布式·架构
蓝胖的四次元口袋13 小时前
分布式知识梳理(4)
分布式
书香门第13 小时前
系统设计练习 - 分布式黑名单服务(design a distributed denylist service)
分布式·系统架构·系统设计
江畔柳前堤20 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
霸道流氓气质1 天前
RabbitMQ 延迟队列与死信队列:原理、实现与实战
分布式·rabbitmq·ruby
爱吃面的猫1 天前
大数据Kafka3.x之——Kafka3.3.0安装与使用(详细)
大数据·分布式·zookeeper
小张同学a.1 天前
zabbix企业级监控平台4——分布式监控与grafana数据可视化
linux·运维·数据库·分布式·信息可视化·zabbix·grafana