存储机制Topic在每个Broker下存储所属的Partition,Partition下由 Index、Log 两类文件组成 。
写入Log 由多个Segment文件组成 , 每个Segment文件容量最多为1GB,接收到的新消息永远是以追加的方式于Segment中(只追加不修改的方式减少了查询的消耗),每个消息有自增编号 。
查询Index 文件仅记录固定消息量的索引编号范围,Kafka在查询时 , 先从Index中定位到小范围的索引编号区间,再去Log中在小范围的数据块中查询具体数据,此索引区间的查询方式称为 - 稀疏索引 。
高效读写
- 分布式、多分区、各线程并行处理
- 稀疏索引 - 小范围快速定位要消费的数据
- 数据文件 , 只追加不修改的顺序写方式(利用了物理磁盘的优势)
- 缓存技术 - 大量减少IO(由系统层面负责IO动作)
- 零拷贝技术 - 解放CPU,大量减少数据块的Copy,数据直接从磁盘到网卡送出(利用了操作系统的技术)
# 数据文件过期时长配置项,三选一log.retention.hours# 小时 , 默认7天log.retention.minutes# 分钟log.retention.ms# 毫秒# 删除的容量警戒值,默认-1无穷大log.retention.bytes# 检查过期间隔,默认5分钟log.retention.check.interval.ms
清理方式log.cleanup.policy = delect | compact
delect1、以Segment文件最后一条消息的时间为删除依据 , 删除整个Segment文件 。2、以Log文件总大小,以 log.retention.bytes 的配置为准,删除最早的Segment文件 。compact对于相同的key , 仅保留最后一次的value,所有数据启用压缩策略(offset的id就不会连续,后续说明) 。
【我的 Kafka 旅程 - 文件存储机制】
推荐阅读
- 我的 Kafka 旅程 - broker
- Mobile 我的Vue之旅、05 导航栏、登录、注册
- Docker搭建kafka及监控
- 我的 Kafka 旅程 - Consumer
- 我的父亲作文600字初中作文 关于我的父亲写人作文600字
- 我的老父亲优秀学生作文5篇
- 我的父亲作文600字初中优秀作文 我的父亲初二优秀作文600字范文
- 我的父亲600字优秀作文初中 描写我的父亲初中600字作文
- 我的世界手机版紫珀台阶怎么获得
- 关于朋友圈的句子短句子 发朋友圈的句子短句子