gpt4 book ai didi

apache-kafka - Kafka集群故障如何处理

转载 作者:行者123 更新时间:2023-12-04 18:35:18 24 4
gpt4 key购买 nike

我们将实现一个 Kafka 发布订阅系统。

现在,在最坏的情况下——如果给定主题的所有 kafka 代理都出现故障——会发生什么?

我试过了……发布者在元数据获取的默认超时后检测到它,如果不成功则抛出异常。

在这种情况下,我们可以监控异常并在修复 Kafka 后重新启动 Publisher。

但是,消费者呢——一旦 Kafka 宕机,他们似乎没有任何异常(exception)。我们根本不能要求“所有”消费者重新启动他们的系统。有没有更好的方法来解决这个问题?

最佳答案

But, what about the consumers -- they don't seem to get any exceptions once Kafka goes down. We simply can't ask "all" the consumers to restart their systems. Any better way to solve this problem?



是的,消费者不会得到任何异常(exception),行为是按设计工作的。但是,您不需要重新启动所有消费者,只需在您的逻辑中确保消费者正在调用 poll()方法定期调用。消费者的设计方式不会受到影响,即使没有集群事件。考虑以下步骤以了解实际会发生什么:

1:所有集群都宕机了,没有活跃的集群。

2: consumer.poll(timeout) // This will be called form you portion of code
3:内部 poll()方法调用 KafkaConsumer.java ,将发生以下调用序列。
poll() --> pollOnce() --> ensureCoordinatorKnown() --> awaitMetaDataUpdate()

我强调了在内部执行逻辑检查后将调用的主要方法调用。现在,此时您的使用者将等待集群再次启动。

4:再次集群或重新启动

5:消费者将收到通知,它会像集群宕机前一样重新开始工作。

注意:- 消费者将从上次偏移提交开始接收消息,成功接收的消息不会重复。

所描述的行为适用于(0.9.x 版本)

关于apache-kafka - Kafka集群故障如何处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com