请区分Kafka主管(经纪人)和分区主管。分区领导者也可以出现在关注者中。当我们将消息发送给Kafka经纪人时,它将根据分区直接将消息发送给领导者和关注者吗?
答案 0 :(得分:1)
来自https://kafka.apache.org/documentation/#intro_distribution
每个分区都有一个充当“领导者”的服务器和零个或多个充当“跟随者”的服务器。领导者处理该分区的所有读写请求,而跟随者则被动复制领导者。
[编辑]
来自https://kafka.apache.org/documentation/#design_replicamanagment
优化领导者选举流程也很重要,因为这是不可用的关键窗口。天真的领导者选举最终将在该节点发生故障时为该节点托管的所有分区的每个分区运行一个选举。相反,我们选择其中一位经纪人为“控制人”。该控制器在代理级别检测到故障,并负责更改发生故障的代理中所有受影响分区的领导者。结果是,我们能够将许多必需的领导者更改通知汇总在一起,从而进行选举过程大量分区的价格便宜得多且速度更快。如果控制者发生故障,幸存的经纪人之一将成为新的控制者。
答案 1 :(得分:0)
代理仅将消息写入主题的分区领导者,这些消息复制到关注者分区。
如果leader分区失败,follower分区将替换leader分区。
什么是kafka控制器? A. Kafka 控制器是 Kafka 集群的大脑: Broker Leader 被称为 kafka 控制器。
其中一个代理充当活动控制器,一次只能有一个控制器。如果你发现 2 个控制器是一个小故障。
控制器监控代理的活跃度并对代理故障采取行动,即如果代理死亡,则控制器将其主题分区的领导权分配给集群中剩余的代理。
还负责选举主题分区负责人。
<块引用>zookeeper 选择其中一位经纪人作为控制器。 代理控制器将选择分区之一作为领导者。
当 Zookeeper 没有收到来自 Controller 的心跳消息时,Zookeeper 会选择一个可用的 broker 作为新的控制器。