当主要的领导者在卡夫卡中倒下时,客户端将如何自动检测到新的领导者



考虑以下场景:

  1. 我有一个Kaffa代理集群(localhost:9002、localhost:9003、localhost:9004、localhost:9005(
  2. 假设localhost:9002是集群的主要(领导者(
  3. 现在,我的生产者正在生成数据并将其发送到代理(localhost:9002(
  4. 如果我的主要代理(localhost:9002(出现故障,在Zookeeper或其他共识算法的帮助下,将选出新的领导者(考虑localhost:9003现在是新的领导者(

因此,在上述场景中,是否有人可以向我解释Kafka客户端(生产者(将如何收到关于新代理配置(localhost:9003(的通知,以及它将如何连接到新的领导者并再次开始生成数据。

Kafka客户端在领导层变动的情况下,在阅读或写入主题时,每次请求都会自动从集群接收必要的元信息。

通常,客户端向配置bootstrap.servers中列出的某个引导服务器发送(读/写(请求。这个初始请求(因此称为bootstrap(返回主题分区领导者所在代理的详细信息,以便客户端可以直接与该代理通信。每个代理都包含整个集群的所有元信息,这意味着还了解其他代理的分区领导者。

现在,如果您的一个经纪人出现故障,并且主题分区的领导层发生了切换,您的制作人将通过该机制得到通知。

有一个名为metadata.max.age.ms的KafkaProducer配置,即使没有发生领导层变动,您也可以修改它来更新生产者的元数据:

"控制生产者为空闲主题缓存元数据的时间。如果自上次生成主题以来所用的时间超过了元数据空闲时间,则该主题的元数据将被遗忘,下一次对其的访问将强制执行元数据获取请求">


关于您的问题的几点注意事项:

  • 术语";Kafka broker集群";实际上并不存在。您有一个Kafka集群,其中包含一个或多个Kafka代理

  • 你没有一个经纪人作为";集群的主要(领导者(";但每个TopicPartition都有一个领导者。也许你指的是控制器,它位于集群中的一个代理上。

最新更新