【Kafka】Kafka Broker工作流程、节点服役与退役、副本、文件存储、高效读写数据
- 1. Kafka Broker 工作流程
- 1.1 Zookeeper 存储的 Kafka 信息
- 1.2 Kafka Broker总体工作流程
- 1.2.1 Controller介绍
- 1.3 Broker 重要参数
- 2. 节点服役与退役
- 3. Kafka副本
1. Kafka Broker 工作流程
1.1 Zookeeper 存储的 Kafka 信息
- 启动Zookeeper客户端
[atguigu@hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh
- 通过 ls 命令可以查看 kafka 相关信息
[zk: localhost:2181(CONNECTED) 2] ls /kafka
1.2 Kafka Broker总体工作流程
-
Broker注册:每个Kafka Broker在启动时会向ZooKeeper注册自己,ZooKeeper维护一个活动Broker列表,这个列表便于集群中的各个Broker相互发现并进行通信。
-
Leader选举: Controller负责选举分区的领导者。当一个分区的领导者副本不可用时,Controller会选择一个新的副本作为领导者。选举结果通过ZooKeeper更新,并通知所有相关的Broker。
-
监控: Controller会监控Broker节点的变化。
-
Controller决定选举:选举规则:在isr中存活为前提,按照AR中排在前面的优先。例如ar[1,0,2], isr [1,0,2],那么leader就会按照1,0,2的顺序轮询
-
Controller将节点信息上传到ZK
-
Controller将领导者选举的结果和副本状态变更通知所有相关的Broker,确保它们有最新的元数据信息。
1.2.1 Controller介绍
在Kafka集群中,并不是每个Broker都有一个Controller,而是整个集群中只有一个活跃的Controller。这个Controller由一个Broker担任,其职责是管理和协调整个集群的元数据和状态变更。以下是关于Kafka Controller的详细介绍:
Kafka Controller职责
- 分区副本状态管理:
领导者选举: 当一个分区的领导者副本不可用时,Controller负责选举新的领导者副本,确保分区始终有一个活跃的领导者来处理读写请求。
副本同步: Controller监控副本的状态,并确保追随者副本与领导者副本保持同步。不同步的副本会被标记为“Out of Sync”(OOS)。 - Broker管理:
Broker注册和注销: 当一个Broker加入或退出集群时,Controller会更新集群的元数据,并重新分配分区和副本,以确保负载均衡和高可用性。
集群扩展和缩减: Controller处理Broker的增加或减少,进行相应的分区和副本重新分配。 - 分区重新分配:
负载均衡: 当集群中负载不均衡时,Controller可以根据配置重新分配分区和副本,确保各个Broker的负载均衡。
分区迁移: Controller协调分区和副本在不同Broker之间的迁移,实现高效的负载管理和故障恢复。 - 集群元数据管理:
元数据更新: Controller管理集群范围内的所有元数据更新,包括主题创建、删除、配置变更等。
通知Broker: 当元数据发生变化时,Controller通知所有相关的Broker,确保它们使用最新的配置信息。 - 故障检测和恢复:
Broker故障检测: Controller定期检查Broker的状态,如果检测到某个Broker故障,它会触发相应的故障恢复机制。
故障恢复: 在Broker故障的情况下,Controller重新分配该Broker上的分区和副本,确保消息的高可用性和数据的完整性。
Controller与Broker的关系
- 控制器是一个特殊的Broker:虽然Controller执行管理和协调任务,但它本质上还是一个Broker,也处理正常的消息生产和消费请求。
- 单一Controller:在任何时候,Kafka集群中只能有一个活跃的Controller。其他Broker在需要时可以通过选举成为Controller。
1.3 Broker 重要参数
2. 节点服役与退役
3. Kafka副本
// P31 TODO