【问题标题】:handling broker down in kafka在卡夫卡处理经纪人
【发布时间】:2016-06-24 08:30:34
【问题描述】:

我在异步模式下使用 kafka 生产者,但是当所有代理都关闭时,它就像同步一样,它会一直等到 metadata.fetch.timeout.ms 过期,对我来说是 60 秒。我的第一个问题,这是正常行为还是我做错了什么?

由于我的逻辑中的事务最多应在 100 毫秒内完成,因此这个超时值对我来说是一个非常大的延迟。也许将 metadata.fetch.timeout.ms 设置为 10 ms 可能会解决我的问题,但我不确定这对我的系统有何影响。这是否会导致某个地方出现瓶颈或大量消耗 cpu?

另一种可能的解决方案可能是在 executorservice 中生成消息,这使得生成真正异步,但我不想让事情变得更复杂。以前有人试过吗?

我的最后一个问题是,如果所有代理都关闭,我是否可以使用切换机制禁用对 kafka 的生产,如果所有代理都启动,则启用。 kafka 中是否有任何用于心跳问题的功能?

谢谢。

【问题讨论】:

    标签: apache-kafka broker kafka-producer-api


    【解决方案1】:

    最好的方法是直接连接到 Zookeeper。不确定您使用什么语言,但应该有可用的 Zookeeper 客户端。我使用具有node-zookeeper-client 的Node。在 Node 中,您首先调用 do createClient(),然后在 Zookeeper 路径 /brokers/ids 上调用 getChildren()。至少在 Node 中,您可以设置一个触发器以在每次 id 数组更改时更改。当没有孩子时,所有经纪人都倒下了。只要有孩子,就有经纪人了。

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 2020-07-21
      • 2018-04-07
      • 2021-02-12
      相关资源
      最近更新 更多