首页 > 其他分享 >我的 Kafka 旅程 - 文件存储机制

我的 Kafka 旅程 - 文件存储机制

时间:2022-09-28 17:48:15浏览次数:57  
标签:文件 存储 Log log 旅程 Kafka 索引 Segment retention

存储机制

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

delect
1、以Segment文件最后一条消息的时间为删除依据,删除整个Segment文件。
2、以Log文件总大小为准,超过 log.retention.bytes 配置的警戒值,删除最早的Segment文件。

compact
对于相同的key,仅保留最后一次的value,所有数据启用压缩策略(offset的id就不会连续,后续说明)。

 

标签:文件,存储,Log,log,旅程,Kafka,索引,Segment,retention
From: https://www.cnblogs.com/Sol-wang/p/16691612.html

相关文章

  • 一文搞懂Kafka,在项目里面更加得心应手的使用
    大家好,又见面了。Apachekafka是主流的消息中间件的一种,本文对kafka的相关概念、原理、使用关键注意事项等进行总结说明。1.kafka关键概念与术语1.1简单的例子说明kafk......
  • 通过Oracle存储过程执行动态SQL输出结果集
    好久没用发现有些记不得了,整理记录下CREATEORREPLACEPROCEDUREP_TEST_OUTCUR1(O_CUROUTSYS_REFCURSOR)ASR_ERR1EXCEPTION;--自定义异常V_SQLSVARCHAR2(20......
  • kafka 从入门到了解
    点击上方蓝字关注我们!什么是kafkaApacheKafka是Apache软件基金会的开源的流处理平台,该平台提供了消息的订阅与发布的消息队列,一般用作系统间解耦、异步通信、削峰填谷等作......
  • mysql存储过程的调用方法
    mysql存储过程的调用方法是经常会用到的,下面就为您介绍mysql存储过程的调用方法,希望对您学习mysql存储过程方面会有些许帮助。先进入mysql命令行环境然后创建函数,先要选择数......
  • oracle在SQL窗口中调用存储过程sql
    DECLARErs_json_outVARCHAR2(512);p_errmsgVARCHAR2(512);BEGINSP_SST_GET_CARD_NO('{"P_ZDBH00":"001","P_INSUORG":"360000","P_ID0000":"02","P_SFZHAO":"350821198......
  • 关于128X8静态存储器芯片设计(转)
    今天在网上找资料,找到了这个拿来和大家分享学习,其实集成电路也不过如些,并不像普通人想象的那个复杂,那么高不可攀!一、设计基本思路 首先基本存储单元有128个每个8位的存......
  • 成本低,使用灵活!华为云OBS助力企业高效解决数据存储问题
    随着数据中心以及物联网和移动设备的快速发展,我们已经来到一个信息爆炸的时代,海量数据、图片、视频以及文件等,给企业存储带来了不小的压力。而如果购买传统的存储设备,高昂的......
  • python对csv文件进行批量处理,修改csv某一列的数据并存储到新的csv文件中
    导论本文中采用os库对文件进行批量导入,采用csv库进行操作,主要是csv.read()和csv.write()本文解决了在新的csv文件中有空格的问题本文处理的是文本文档,采用‘wt’,‘rt’,不......
  • linux进行挂载Nas存储
    1、创建挂载目录mkdir/mnt/nas2、挂载mount-ousername=admin,password=admin!@#45678,iocharset=utf8//192.168.1.1/abc/mnt/nas 参数说明:1username......
  • JuiceFS 在 Elasticsearch/ClickHouse 温冷数据存储中的实践
    企业数据越存越多,存储容量与查询性能、以及存储成本之间的矛盾对于技术团队来说是个普遍难题。这个难题在Elasticsearch与ClickHouse这两个场景中尤为突出,为了应对不同......