考虑以下情况:
因此,在上面的场景中,请有人向我解释一下Kafka客户机(生产者)将如何被告知新的代理配置(localhost:9003),以及它将如何连接到新的领导者并开始再次生成数据。
发布于 2020-11-14 10:04:35
卡夫卡客户端在每次请求时都会自动从集群接收到必要的元信息,以便在出现领导变更时阅读或写入主题。
通常,客户端向配置bootstrap.servers
中列出的引导服务器发送一个(读/写)请求。这个初始请求(因此称为引导)返回主题分区领导者所在代理的详细信息,以便客户端可以直接与该代理进行通信。每个单独的代理包含整个集群的所有元信息,这意味着对其他代理的分区领导也有相关知识。
现在,如果您的代理中有一个崩溃了,并且主题分区的领导发生了切换,那么您的生产者将通过该机制得到有关它的通知。
有一个名为KafkaProducer配置的metadata.max.age.ms
,您可以修改它来更新生产者的元数据,即使没有发生领导更改:
“控制生成程序为空闲主题缓存元数据的时间。如果上次生成某个主题的时间超过了元数据空闲时间,则该主题的元数据将被遗忘,下一次访问将强制进行元数据获取请求。”
关于你的问题,只需注意几个问题:
https://stackoverflow.com/questions/64832386
复制相似问题