gpt4 book ai didi

apache-kafka - 卡夫卡生产者 : How to fairly balance the messages between kafka consumers (not between partitions)

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

我有一个 kakfa 主题,有 20 个分区和属于同一消费者组的 5 个消费者。这意味着我们每个消费者有 4 个分区。比方说:

  • consumer-0被分配给partition-0、partition-1、partition-2和partition-3
  • consumer-1被分配给partition-4、partition-5、partition-6和partition-7
  • consumer-2被分配给partition-8、partition-9、partition-10和partition-11
  • consumer-5被分配给partition-12、partition-13、partition-14和partition-15
  • consumer-4被分配给partition-16、partition-17、partition-18和partition-19

生产者平均向主题发送 10 条消息。在这种情况下,只有分区 0、1、2、3、4、5、6、7、8 和 9 将接收消息。其余的将是空的。我们的问题是 consumer-0 和 consumer-1 将处理 4 条消息,同时 consumer-2 将处理两条消息。此外,消费者 4 和 5 将进行任何处理,因为它们的分区是空闲的。

在生产者端,我们正在使用 DefaultPartitioner(kafka-client 2.3.1),以便将记录均匀地发送到分区。我们想问一下是否有可能基于 kafka 消费者而不是分区来公平地生产消息。通过这种方式,每个消费者将只处理两条消息,并且流程的复杂性将在消费者之间公平分配。

最佳答案

我认为你做的计算是不相关的,因为没有只发送10条消息的场景,如果真的是这种情况你应该考虑使用较少的分区和消费者组中相对较少的消费者。
您可以假设对于流中更多的记录,您的生产者将在分区之间大致均匀地分配负载,因此在消费者之间,现在您不关心 consumer-1 是否收到 1000 条记录并且consumer-2 收到了 998。

还要记住,如果负载在变化,并且对于较低的阶段,您不会让消费者闲置,而是处理相同的负载,这是完全可以的,一些消费者收到 4 条消息,其他消费者收到 2 条消息,还有其他消费者0,因为处理 4 条消息相对于您期望的负载来说基本上是一种“空闲”,而且这些差异非常小,因此实际上不算数; 因此,当处理能力/时间真的很重要时,让 Kafka 为更高的负载施展魔法。

关于apache-kafka - 卡夫卡生产者 : How to fairly balance the messages between kafka consumers (not between partitions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64428723/

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