Kafka的Controller

选举

controller的选举依赖于ZK,在Kafka集群启动的时候,会在ZK中创建一个临时节点/controller,每个broker启动时(broker 启动过程中会启动 controller 服务,其中涉及监听 ZK节点/controller的数据变化和选举逻辑等),都会先去访问ZK中的这个节点;如果不存在broker就会去创建这个节点,先到先得成为controller。

[zk: localhost:2181(CONNECTED) 3] get /controller
{"version":1,"brokerid":0,"timestamp":"1608173427409"}

功能

监听分区相关的变化

  • 为ZK中的/admin/reassign_partitions节点注册监听器Handler来处理分区reassignment

  • 为/isr_change_notification节点注册Handler来处理ISR副本集合的变更

监听主题相关的变化

  • 为/brokers/topics节点注册Handler来处理主题的增减

  • 为/admin/delete_topics节点注册Handler来处理主题的删除动作

监听Broker的变化

  • 为/brokers/ids节点注册Handler来处理broker的增减

从ZK中获取broker、topic、partition相关的元数据信息

  • 为/brokers/topics/<topic>节点注册Handler来处理topic中分区分配的变化

启动并管理分区状态机和副本状态机

更新集群的元数据信息,并同步给其它的Broker

Reference

Kafka控制器选取原理

Kafka的Controller和Leader选举

Kafka ControllerKafka 集群中的一个特殊角色,它具有以下主要作用: 1. 集群管理:Kafka Controller 负责管理整个 Kafka 集群的状态和元数据信息。它负责监控和维护集群中的 Broker、Topic、分区等信息,并确保集群的正常运行。如果有新的 Broker 加入或退出集群Controller 将负责处理相关的操作和任务。 2. 分区分配:当创建新的 Topic 或者增加了 Topic 的分区数时,Kafka Controller 负责计算和执行分区的分配方案。它会根据配置的分区分配策略(如默认的 Range、RoundRobin 或自定义策略),将分区均匀地分配给各个 Broker 和消费者组,以实现负载均衡和高可用性。 3. Leader 选举:每个分区在 Kafka 集群中都有一个 Leader Broker,负责处理该分区的所有读写请求。当 Leader Broker 发生故障或不可用时,Controller 将负责进行 Leader 选举,选择新的 Leader Broker 来接管该分区的工作。通过 Leader 选举,可以保证分区在发生故障时仍然能够继续提供服务。 4. 副本管理:Kafka 使用副本来提供数据冗余和故障容错能力。Controller 负责管理副本的创建、同步和分布等操作。它会监控副本的状态,并在副本发生故障或不可用时进行恢复和修复,以保证数据的可靠性和一致性。 总的来说,Kafka ControllerKafka 集群中的核心组件之一,负责管理和维护集群的状态、元数据和各种任务。它通过协调和执行各种操作,确保 Kafka 集群的正常运行、数据的可靠性和高可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值