目录
2.2 KRaft(Kafka 2.8+)中的 Controller
4.Kafka 请求处理流程(Request Handling)

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 处理:
-
拉取 Leader 最新 Log
-
写入本地磁盘
-
把最新 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 |
Kafka集群核心机制解析

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



