首页 > 其他分享 >Kafka存储机制

Kafka存储机制

时间:2024-05-09 10:45:14浏览次数:23  
标签:文件 存储 partition Kafka 索引 机制 segment leader

Kafka之所以有那么高的吞吐量,很大程度取决于它的存储机制,一个主题可以有多个partition,每个partition有一个leader和多个副本,读写主要通过leader,副本的主要功能还是为了保证数据的安全性和保证可靠性,当某个partition的leader出现异常后,剩余副本可以选举出新的leader;每个partition下面包含多个log文件和index文件,一对log文件和index文件组成一个segment,所以也可以理解为一个partition包含多个segment,其中log文件存储的是具体数据。

 

    kafka消息通过offset划分为多个segment,这样一方面可以增加查询效率,另一个方面也方便按照segment进行数据删除,segment的划分可以通过配置时间定期生成一个新的,也可以配置每个segment文件大小,达到设置阀值后生成一个新的segment。索引分为全量索引和稀疏索引,区别就是一个是部分数据有索引,减少索引的存储量。

 

 

    Kafka采用的是稀疏索引,索引文件里面就两列,一列存offset,另一列存position,比如(3,555)表示这个文件的第三条,在这个文件的第555个字节开始,通过二分查找可以很快的定位到文件。

 

 

    其中消息的存储格式如下图4、图5

 

 

 

 

标签:文件,存储,partition,Kafka,索引,机制,segment,leader
From: https://www.cnblogs.com/beststrive/p/18181605

相关文章

  • iceoryx源码阅读(八)——IPC通信机制
    目录1 整体结构2 序列化与反序列化3 类Unix系统的实现3.1 发送函数send3.2 接收函数receive4 Windows系统的实现4.1 发送函数send4.2 接收函数receive5 Roudi的监听逻辑1 整体结构通过前面的介绍,订阅者、发布者与Roudi守护进程之间也需要通信,如上文介绍的,请求Roudi守护进村创建......
  • 1992年,姜万勐 看到 MPEG芯片Epiphany – 用MPEG1 把图像和声音同时存储在一张
    如果我穿越到1993年,发现万燕公司在VCD市场中面临激烈竞争,我会提出一些建议来帮助他们应对挑战并保持竞争力:产品创新与差异化:鉴于竞争对手大量仿制VCD机,我会建议万燕公司通过产品创新和差异化来区别于竞争对手。这可能包括提高VCD机的性能、功能和外观设计,以及增加附加功能如更好......
  • 【VMware vSphere】存储提供程序中I/O 筛选器状态显示为脱机以及证书已到期的解决办法
    存储提供程序是由VMware提供或由第三方通过vSphereAPIsforStorageAwareness(VASA)开发的软件组件。存储提供程序也可以称为VASA提供程序。存储提供程序可与包含外部物理存储和存储抽象的各种存储实体(例如 vSAN 和 VirtualVolumes)集成。存储提供程序也可以支持软件......
  • 细说夜莺监控系统告警自愈机制
    虽说监控系统最侧重的功能是指标采集、存储、分析、告警,为了能够快速恢复故障,告警自愈机制也是需要重点投入建设的,所有可以固化为脚本的应急预案都可以使用告警自愈机制来快速驱动。夜莺开源项目从v7版本开始内置了告警自愈模块,本文将详细介绍告警自愈的原理和实现。夜莺项目......
  • kafka
    Kafka是一个分布式流处理平台,被广泛用于构建实时数据管道,允许你从不同的数据源获取数据,然后在系统之间实时传输数据。Kafka的主要特性包括:分布式:Kafka可以在多台机器上部署,可以处理超过1PB的数据。高吞吐:Kafka每秒可处理数百万条消息。可持久化:Kafka将所有消息存储......
  • Python中级之GC机制+字符编码+文件操作
    【一】深浅拷贝【1】深浅拷贝问题如果是浅拷贝,只会复制一层,如果拷贝的对象中有可变数据类型,修改可变数据类型还会影响拷贝的对象如果是深拷贝,完整复制,无论可变或不可变,都是创建出新的来,无法怎么修改原对象,都不会对拷贝出的对象造成影响(1)浅拷贝对于原对象中的可变数据类型......
  • pymongo:Python下 MongoDB 的存储操作
    1.连接mongodb#########方法一##########importpymongo#MongoClient()返回一个mongodb的连接对象clientclient=pymongo.MongoClient(host="localhost",port=27017)#########方法二##########importpymongo#MongoClient的第一个参数host还可以直接传MongoDB......
  • docker部署kafka服务
    dockerrun-d--namekafka--hostnamekafka-server\--log-optmax-size=200m\--log-optmax-file=1\--restart=always\-p9092:9092\--memory1024m\-eKAFKA_CFG_LOG_RETENTION_MS=60000\-eKAFKA_CFG_MAX_REQUEST_SIZE......
  • SQL Server实战五:存储过程与触发器
      本文介绍基于MicrosoftSQLServer软件,实现数据库存储过程与触发器的创建、执行、修改与删除等操作。目录1交互式创建并执行——存储过程一2交互式创建并执行——存储过程二3用T-SQL创建——存储过程一4用T-SQL创建——存储过程二5交互式修改存储过程6用T-SQL修改存储......
  • windows下使用命令行查看已存储的wifi密码
    netshwlanshowinterface查看当前已连接wifi信息  netshwlanshowprofiles查看所有已保存的wifi配置文件     netshwlanshowprofilesname="XXXXXX"key="Clear"查看特定配置文件详情,包括wifi密码,密码在“关键内容”行 ......