gpt4 book ai didi

java - Kafka 每个消费者主题配置

转载 作者:行者123 更新时间:2023-11-30 02:30:32 27 4
gpt4 key购买 nike

据我了解,Kafka Consumer Group 是根据特定主题存在的分区数量进行负载平衡的。因此,主题的分区数量与订阅该主题的消费者组中的消费者数量的理想组合是1:1。

我有一个场景,其中每个消费者实际上本身就是一个消费者组(即每组 1 个消费者)。这主要是由于不同数据库之间的同步使得相同的数据存在。我想做的就是消费者从生产者那里收到消息(广播)后立即在不同的环境中运行相同的工作。

对我来说,我不认为分区/负载平衡的想法有任何区别。我将选择一个具有 1 个分区和 n 复制因子(n = 总消费者组,或我的情况下的消费者)的主题。有人认为我仍然应该为我的案例实现超过 1 个分区吗?如果是这样,请说明原因。

附注我正在使用生产者/消费者 API,仅我的消息传递框架需要对我现有的应用程序设置进行最小的更改/影响。

最佳答案

the ideal combination is 1:1 for the number of partitions for a topic and the number of consumers in a consumer group

更准确地说,分区的数量限制了一个消费者组中消费者的数量(如果消费者多于分区,他们就会处于空闲状态)。消费者的数量可以少于分区的数量。我不会认为 1:1 一定是理想的,这是实际的限制。

I am going with a topic that has 1 partitions and n Replication-Factor (n = total consumer groups, or consumer for my case).

我认为复制因子不等于消费者组数量的值(value)。复制是为了恢复能力,即在代理出现故障时防止数据丢失。它与消费者的数量没有任何关系,因为每个消费者只会从给定分区的领导代理中消费。

Does anyone think that I should still implement more than 1 partition for my case? If so, could you please mention why.

对数据进行分区是为了负载分配,无论是在代理端还是在消费者端的并行性。即使您认为不需要,从一开始就设置更多的分区比稍后重新分区数据更容易(如果/当您发现可以从中受益时)。另一方面,没有必要将它们设置得太高,因为它们有自己的开销(例如代理上的 CPU 负载)。

P.S. I am not using the Producer/Consumer API since I am not doing Table/Stream related aggregation

在我看来,您的意思是您没有使用 Kafka Streams API,因为 Kafka Streams 提供了 KTable、KStream 及其聚合。

关于java - Kafka 每个消费者主题配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44408496/

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