当前位置: 首页 > java >正文

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信息

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

在这里插入图片描述

创建生产者:

在这里插入图片描述

创建生产者:

在这里插入图片描述
生产并消费数据

在这里插入图片描述

查看数据:

在这里插入图片描述

http://www.xdnf.cn/news/18116.html

相关文章:

  • 深入浅出决策树
  • (二十)深入了解 AVFoundation-编辑:使用 AVMutableVideoComposition 实现视频加水印与图层合成(下)——实战篇
  • Google 的 Opal:重新定义自动化的 AI 平台
  • Git版本控制与协作
  • 4.9 配置 开发服务器 和 请求代理
  • 汽车之家联合HarmonyOS SDK,深度构建鸿蒙生态体系
  • 使用Idea安装JDK
  • 从零开始,系统学习AI与机器学习:一份真诚的学习路线图
  • 容器化 Android 开发效率:cpolar 内网穿透服务优化远程协作流程
  • Baumer高防护相机如何通过YoloV8深度学习模型实现网球运动员和网球速度的检测分析(C#代码UI界面版)
  • WPF中BindingList<T>和List<T>
  • Conda技巧:修改Conda环境目录,节省系统盘空间
  • 学习:各种不同类型的for循环遍历,forEach/map/filter/every/some/includes/reduce的详细用法(1)
  • 【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
  • [Linux]学习笔记系列 --[mm][list_lru]
  • Redis-缓存-穿透-布隆过滤器
  • 测试Windows10IoT系统是否可以正常运行KingSCSDA3.8软件
  • Transformer架构的数学本质:从注意力机制到大模型时代的技术内核
  • 蓝凌EKP产品:JSP 性能优化和 JSTL/EL要点检查列表
  • Excel 表格数据自动填充
  • C语言私人学习笔记分享
  • Canny边缘检测
  • pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘
  • python pandas库 series如何使用
  • 电脑上搭建HTTP服务器在局域网内其它客户端无法访问的解决方案
  • 【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
  • 【从零开始学习Redis】项目实战-黑马点评D2
  • Conda 环境 在AI 私有化部署 有怎么用?
  • 迅速掌握Git通用指令
  • C++内存模型