首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当主要的领导者在卡夫卡倒下时,客户会如何自动发现一个新的领导者?

当主要的领导者在卡夫卡倒下时,客户会如何自动发现一个新的领导者?
EN

Stack Overflow用户
提问于 2020-11-14 09:13:24
回答 1查看 1K关注 0票数 0

考虑以下情况:

  1. 我有一个Kakfa broker集群(localhost:9002,localhost:9003,localhost:9004,localhost:9005)。
  2. 假设localhost:9002是集群的主要(领导者)。
  3. 现在,我的生产者正在生成数据并将其发送给代理(localhost:9002)。
  4. 如果我的主要经纪人(localhost:9002)倒闭,在Zookeeper或其他协商一致的算法的帮助下,将选出新的领导者(考虑localhost:9003现在是新的领导者)。

因此,在上面的场景中,请有人向我解释一下Kafka客户机(生产者)将如何被告知新的代理配置(localhost:9003),以及它将如何连接到新的领导者并开始再次生成数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-14 10:04:35

卡夫卡客户端在每次请求时都会自动从集群接收到必要的元信息,以便在出现领导变更时阅读或写入主题。

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

现在,如果您的代理中有一个崩溃了,并且主题分区的领导发生了切换,那么您的生产者将通过该机制得到有关它的通知。

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

“控制生成程序为空闲主题缓存元数据的时间。如果上次生成某个主题的时间超过了元数据空闲时间,则该主题的元数据将被遗忘,下一次访问将强制进行元数据获取请求。”

关于你的问题,只需注意几个问题:

  • "Kafka broker集群“一词并不真正存在。你有一个卡夫卡集群包含一个或多个卡夫卡经纪人。
  • 您没有代理作为“集群的主要(领导者)”,但是对于每个TopicPartition,您有一个领导者。也许您指的是位于集群中某个代理上的Controller。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64832386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档