【问题标题】:Kafka consumer groups suddenly stopped balancing messages among instancesKafka 消费组突然停止在实例之间平衡消息
【发布时间】:2019-10-02 20:38:36
【问题描述】:

我们有一个由 Kafka on Confluent 通信的微服务架构,其中每个服务都设置在自己的消费者组中,以平衡多个实例之间的消息传递。

例如:

SERVICE_A_INSTANCE_1 (CONSUMER_GROUP_A)
SERVICE_A_INSTANCE_2 (CONSUMER_GROUP_A)
SERVICE_A_INSTANCE_3 (CONSUMER_GROUP_A)

SERVICE_B_INSTANCE_1 (CONSUMER_GROUP_B)
SERVICE_B_INSTANCE_2 (CONSUMER_GROUP_B)

当一条消息发出时,它应该只被每个消费者组的一个实例消费。

直到两天前,这一切都很好。突然之间,每条消息都被传递到所有实例,因此每条消息都会被处理多次。基本上,消费者组停止工作并且消息没有被分发。

要点:

  • 我们在 GCP 上的 Confluent 中使用 Kafka paas。
  • 我们在不同的环境中对此进行了测试,一切正常
  • 我们的消费者没有任何变化
  • 我们没有对集群进行任何更改(我们无法知道 Confluent 是否更改了某些内容)

我们怀疑这可能是 Confluent 的问题或与我们当前配置不兼容的更新。 Kafka 2.2.0 was recently released,它对消费者群体的行为有一些改变。

我们目前正在努力迁移到 AWS MSK,以查看问题是否存在。

关于可能导致此问题的任何想法?

【问题讨论】:

  • 当您在 GCP 中使用 Confluent Kafka 时,如何判断“没有对集群进行任何更改”?
  • @yuyang 我的意思是 我们没有进行任何更改。 像配置之类的。环境是一个黑匣子,我们甚至无法访问日志。这就是我们希望从 Confluent 迁移出去的主要原因。

标签: apache-kafka kafka-consumer-api confluent-platform


【解决方案1】:

TL;DR:我们通过从 Confluent 迁移到我们自己在 GCP 上的 Kafka 集群解决了这个问题。

我会回答我自己的问题,因为它已经有一段时间了,我们已经解决了这个问题。此外,我的见解可能会帮助其他人就在哪里部署他们的 Kafka 基础架构做出更明智的决定。

很遗憾,我们无法深入了解 Confluent 的问题。这很可能是他们这边的事情,因为我们只是迁移到 GCP 上自己的自我管理实例,一切都恢复了正常。

在我对将 Confluent 用作托管 Kafka 服务的最终想法和警告之前,有一些重要的澄清:

  • 我们认为这与影响 Node.js 的某些因素有关。我们用 Node 以外的语言测试了外部库,结果符合预期。在对多个最流行的 Node 库进行测试时,问题仍然存在。
  • 我们没有对 Confluent 提供高级支持。
  • 我无法确认这个问题不是我们的错。

考虑到所有这些要点,我们的结论是,对于决定使用 Confluent 托管服务的公司,最好计算包含高级支持的成本。否则,Kafka 会变成一个完全封闭的黑匣子,无法诊断问题。在我个人看来,在出现问题时对 Confluent 团队的依赖是如此之大,以至于在需要时没有准备好提供帮助会导致服务无法生产。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 2020-06-30
    • 1970-01-01
    • 2021-02-02
    • 2017-04-20
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多