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

kafka 不同分区文件存储_消息系统Kafka笔试题:Kafka 底层的文件存储结构

分区目录文件, Partition 命名规则为:【topic 名称】+【从 0 开始的有序序号】drwxr-x% 2 root root 4096 Jul 26 19:35 kafka-topic-01-0drwxr-x% 2 root root 4096 Jul 24 20:15 kafka-topic-01-1drwxr-x% 2 root root 4096 Jul 24 20:15 kafka-topic-01-2 # 分区目录中的日志数据文件和日志索引文件-rw-r-----1rootroot512KJul2419:5100000000000000000000.index-rw-r-----1rootroot1.0GJul2419:5100000000000000000000.log-rw-r-----1rootroot768KJul2419:5100000000000000000000.timeindex-rw-r-----1rootroot512KJul2420:0300000000000022372103.index-rw-r-----1rootroot1.0GJul2420:0300000000000022372103.log-rw-r-----1rootroot768KJul2420:0300000000000022372103.timeindex-rw-r-----1rootroot512KJul2420:1500000000000044744987.index-rw-r-----1rootroot1.0GJul2420:1500000000000044744987.log-rw-r-----1rootroot767KJul2420:1500000000000044744987.timeindex-rw-r-----1rootroot10MJul2420:2100000000000067117761.index-rw-r-----1rootroot511MJul2420:2100000000000067117761.log-rw-r-----1rootroot10MJul2420:2100000000000067117761.timeindex

在Kafka中,每个Log对象又可以划分为多个LogSegment文件,每个LogSegment文件包括一个日志数据文件和两个索引文件,文件命名规则为上一个Segment 文件最后一条消息的Offset 值。如下图所示

a8c24dc8b014ea0c1bf7a6b7dbcfc93f.png


如何根据Offset来查找一条消息: 根据指定的偏移量,使用二分法查询定位出该偏移量对应的消息所在的分段索引文件和日志数据文件。然后通过二分查找法,继续查找出小于等于指定偏移量的最大偏移量,同时也得出了对应的Position(实际物理位置),根据该物理位置在分段的日志数据文件中顺序扫 描查找偏移量与指定偏移量相等的消息。下面是Kafka中分段的日志数据文件和偏移量索引文件的对应 映射关系图(其中也说明了如何按照起始偏移量来定位到日志数据文件中的具体消息)

9eba6e06ceb86966a3b9d71ebdda566e.png

相关文章:

  • kafka怎么查看消息堆积_Kafka 线上问题: 消息堆积一直不消费, 重启服务后开始消费...
  • 豪沃轻abs12v电是什么系统_小汽车显示abs是什么问题,ABS系统介绍
  • python列表删重_python列表删除和多重循环退出原理详解
  • redis集群如果保证数据一致性_从CAP理论到分布式一致性协议
  • 影像科dsa为什么必须买维修保险_为什么大家对影像科了解得那么少呢?
  • netcore权限控制_lin-cms-dotnetcore.是如何方法级别的权限控制的?
  • 文本框 清空_只需5步,Unity中创建自滚动聊天室文本框
  • java判断是否运行在windows terminal_判断制冷空调系统是否运行正常的5个参数
  • mpa和pis_psig与mpa换算(压力单位换算psi)
  • php环境mysql 5.5安装教程_win7(64位)php5.5-Apache2.4-mysql5.6环境安装
  • mysql分组去掉重复记录_mysql去掉重复数据只保留一条,以及取分组后的一条数据...
  • 查看mysql的位数_如何查看mysql是几位的
  • mysql 视图 行号_MySQL踩坑记之视图添加行号
  • dos 前一个命令_非常实用的几个DOS命令,轻松解决电脑问题
  • shell mysql命令的参数_Linux/Unix shell 参数传递到SQL脚本
  • dva中组件的懒加载
  • gf框架之分页模块(五) - 自定义分页
  • Just for fun——迅速写完快速排序
  • Laravel5.4 Queues队列学习
  • REST架构的思考
  • spring cloud gateway 源码解析(4)跨域问题处理
  • Sublime text 3 3103 注册码
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 程序员最讨厌的9句话,你可有补充?
  • 大数据与云计算学习:数据分析(二)
  • 反思总结然后整装待发
  • 力扣(LeetCode)56
  • 一个SAP顾问在美国的这些年
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 2017年360最后一道编程题
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • #define 用法
  • #QT(一种朴素的计算器实现方法)
  • #stm32整理(一)flash读写
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (1)SpringCloud 整合Python
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (剑指Offer)面试题34:丑数
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .form文件_一篇文章学会文件上传
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET多线程执行函数
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .Net语言中的StringBuilder:入门到精通
  • .Net中ListT 泛型转成DataTable、DataSet
  • .py文件应该怎样打开?
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @NestedConfigurationProperty 注解用法
  • @Responsebody与@RequestBody