gpt4 book ai didi

apache-kafka - 卡夫卡 : weight-based load balanced consumers

转载 作者:行者123 更新时间:2023-12-05 06:42:28 25 4
gpt4 key购买 nike

我是 Kafka 的新手,与 RabbitMQ(我之前使用的消息代理)相比,它提供的 API 级别低得多,这让我不知所措。我要解决的问题如下:

我有 3 个主题:

  • 主题 1:权重为 10%
  • 主题 2:权重为 40%
  • 主题 3:权重为 50%

这 3 个主题充满了我必须处理的消息。工作人员读取消息,进行一些处理并继续使用 HTTP POST 发送,该 HTTP POST 对所有 3 个主题共享带宽限制。

我需要什么:

如果队列 2 和 3 为空,处理后 100% 的可用带宽应该转到队列 1 - 如果多个队列上有消息,则可用带宽应使用事件队列之间分配的“权重”进行分配。

目前,除了“权重”分配(目前,它们以循环方式分配)外,一切正常。优先级不是一种选择,因为在使用优先级时,优先级较高的消息将始终在优先级较低的消息之前传递。

Kafka 有这样的选项吗?在 RabbitMQ 中,我已经解决了为每个队列分配不同预取值的问题

最佳答案

据我现在对 Kafka 的了解,这不可能完全符合您的要求。让我们记下一些事实:

  1. 主题可以划分。
  2. 一个分区只能由一个消费者处理。没有两个消费者可以处理同一个分区。 (这确保了使用相同 key 的两条消息的消息排序。)

结论:为主题获得更多 CPU 能力的唯一方法是拥有更多分区和相应数量的消费者。

您可以根据您的权重设置分区数:

  • 主题 1:2 个分区
  • 主题 2:8 个分区
  • 主题 3:10 个分区

有多少消费者?使用 10 个消费者,0...9,并让他们按如下方式订阅主题:

  • 主题 1:消费者 0 和 1
  • 主题 2:消费者 2 到 9
  • 主题 3:所有消费者

现在每个消费者都必须处理两个主题,当所有主题都有数据时,消费者比例将反射(reflect)您要求的 5:4:1。当前两个主题干涸时,仍然有 10 个消费者按要求在主题 3 上工作。

关于apache-kafka - 卡夫卡 : weight-based load balanced consumers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032699/

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