深入Kafka

集群成员关系

深入Kafka

控制器

  • 控制器的作用: 除具有一般broker的功能之外,还负责分区首领的选举
  • 控制器的选举: 各broker向ZK中/controller注册临时节点
  • 分区首领的选举: broker加入时,同步副本;broker离开时,选举新的分区首领

分区复制

  • 首领副本 :每个分区都有一个首领副本。首领副本负责处理理所有生产者和消费者的请求
  • 跟随者副本:首领以外的副本都是跟随者副本。跟随者副本不处理理来自客户端端请求,它们唯一的任务就是从首领那里负责消息,保持与首领一致的状态。
  • AR:Assigned Replicas,所有副本
  • ISR:In-Sync Replicas,已同步的副本
  • OSR:Out-Of-Sync Replicas,掉队的副本
  • AR = ISR + OSR

物理存储

  • Kafka会将数据持久化到文件,文件目录以分区来组织,每个分区下有多个文件,每个文件称作一个片段,每个片段包含1G或一周的数据,以较小的值为准。
  • 保留策略:数据被删除之前可以保留多长时间,或者清理数据之前可以保留的数据量大小。
  • 3类文件:数据文件、索引文件、时间索引文件。
    深入Kafka

基本概念

深入Kafka

刷盘

深入Kafka

文件滚动

深入Kafka

  • 默认情况下,每个片段包含1G或7天的数据,以较小的值为准;如果达到片段上限,就关闭当前文件,并打开一个新文件

数据清除策略

  • log.cleanup.policy:⽇志清除策略(delete/compact)
  • log.retention.bytes:⽇志保留量
  • log.retention.hours:⽇志保留时间
    深入Kafka

索引

  • 3步定位message
    1)⼆二分查找index file
    2)通过index file定位物理理地址
    3)顺序扫描 segment file
  • 稀疏索引 vs. 稠密索引
    深入Kafka

消息格式

深入Kafka