Kafka 系列 —(8)Kafka 深入解析:集群成员关系、控制器、复制、请求处理、物理存储

Kafka集群核心机制解析

目录

1.集群成员关系(Cluster Membership)

2.控制器(Controller)

2.1 Controller 的核心职责

(1)管理分区 Leader 选举

(2)维护集群元数据表

(3)监控 broker 存活

2.2 KRaft(Kafka 2.8+)中的 Controller

3.Kafka 复制机制(Replication)

3.1 副本类型

3.2 同步机制

3.3 复制的一致性

4.Kafka 请求处理流程(Request Handling)

4.1 Produce Request(生产请求)工作原理

acks 的不同级别

4.2 Fetch Request(拉取请求)

Consumer Fetch:

Follower Fetch:

4.3 其他请求

MetadataRequest

JoinGroup / SyncGroup

OffsetCommit / OffsetFetch

5.Kafka 物理存储

5.1 分区分配

5.2 文件管理(Log Segment)

5.3 文件格式(Record Batch)

5.4 索引结构

Offset Index(.index)

Timestamp Index(.timeindex)

Transaction Index(.txnindex)

5.5 日志清理(Log Cleaner)

5.6 清理的工作原理

Delete 清理

Compact 清理

5.7 何时会清理主题

Delete 模式:

Compact 模式:

Compact + Delete 并存:


1.集群成员关系(Cluster Membership)

Kafka 使用 Kafka 自己的 Raft(KRaft)或 ZooKeeper 来维护集群成员。

集群成员包含:

  • Broker 节点

  • Controller 节点(KRaft 下为多个 Controller + Leader Controller)

  • Client:Producer、Consumer

节点角色:

节点 角色
Broker 存储 Topic 分区、处理请求
Controller 集群元数据管理、分区Leader选举
Client 读写消息

成员关系元数据包含:

  • broker.id

  • broker 状态(启动、存活、挂掉)

  • topic → partition → leader → ISR 列表

  • ACL 访问权限

  • 配置(topic / broker-level configs)

存活检测:

  • Broker 通过 心跳(Heartbeat) 向 Controller 报告状态

  • Controller 会从内存元数据中移除长时间无心跳的 Broker


2.控制器(Controller)

Kafka Controller 是集群的“大脑”,负责全局元数据与协调。


2.1 Controller 的核心职责

(1)管理分区 Leader 选举

当分区的 leader broker 挂掉:

  • controller 从 ISR 中挑选新的 leader

  • 向其他 broker 广播元数据变更

  • 通知客户端更新 metadata

(2)维护集群元数据表

  • topic 元数据

  • broker 列表

  • partition 分配关系

  • 配置(topic/broker)

(3)监控 broker 存活

如果 Broker 超时不发心跳,则:

  • 从存活列表中移除

  • 触发 leader 重新选举


2.2 KRaft(Kafka 2.8+)中的 Controller

  • 使用 Raft 共识算法

  • Controller 是一个多节点组(Raft quorum)

  • 有一个 Leader Controller

  • 比 Zookeeper 更高可用、性能更高


3.Kafka 复制机制(Replication)

Kafka 的高可用基于 分区副本(Replica)


3.1 副本类型

副本 描述
Leader Replica 负责读写(客户端只与 Leader 通信)
Follower Replica 从 leader 拉取数据,与 leader 保持同步
ISR(In-Sync Replicas) 与 leader 完全同步的副本集合
OSR(Out-of-Sync Replicas) 落后太多的副本,暂时不在 ISR 中

3.2 同步机制

Follower 持续向 Leader 发起:

FetchRequest (type=Follower)

保持同步。

Follower 处理:

  1. 拉取 Leader 最新 Log

  2. 写入本地磁盘

  3. 把最新 offset 报告给 Leader


3.3 复制的一致性

Kafka 使用 基于 ISR 的强一致性

只有 ISR 中的副本才有资格升为 Leader。

避免“脑裂”或使用落后副本导致数据回滚。


4.Kafka 请求处理流程(Request Handling)

Kafka Broker 会接收多种请求类型:

请求类型 发起者 说明
Produce 请求 Producer → Broker 写数据
Fetch 请求 Consumer/Follower → Broker 读数据/复制数据
Metadata 请求 Producer/Consumer 获取分区 leader 等
JoinGroup、SyncGroup Consumer → Broker 消费者群组协调
Offset 请求 Consumer 提交 & 获取 offset

4.1 Produce Request(生产请求)工作原理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

34号树洞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值