Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 每个消费者配置的卡夫卡主题_Java_Apache Kafka_Partitioning_Kafka Producer Api - Fatal编程技术网

Java 每个消费者配置的卡夫卡主题

Java 每个消费者配置的卡夫卡主题,java,apache-kafka,partitioning,kafka-producer-api,Java,Apache Kafka,Partitioning,Kafka Producer Api,我知道Kafka Consumer Group是基于特定主题的分区数量进行负载平衡的。因此,理想的组合是一个主题的分区数与订阅该主题的消费者组中的消费者数为1:1 我有一个场景,在这个场景中,我的每个消费者实际上都是一个消费者组(即,每个组1个消费者)。这主要是由于不同数据库之间的同步,因此存在相同的数据。我所要做的就是在消费者收到制作人(广播)的消息后,在不同的环境中运行相同的作业 对我来说,我不相信分区/负载平衡的想法有什么不同。我将讨论一个主题,该主题有1个分区和n复制因子(n=总消费者组

我知道Kafka Consumer Group是基于特定主题的分区数量进行负载平衡的。因此,理想的组合是一个主题的分区数与订阅该主题的消费者组中的消费者数为1:1

我有一个场景,在这个场景中,我的每个消费者实际上都是一个消费者组(即,每个组1个消费者)。这主要是由于不同数据库之间的同步,因此存在相同的数据。我所要做的就是在消费者收到制作人(广播)的消息后,在不同的环境中运行相同的作业

对我来说,我不相信分区/负载平衡的想法有什么不同。我将讨论一个主题,该主题有1个分区和
n
复制因子(
n
=总消费者组,或我的案例中的消费者)。有人认为我应该为我的案例实现多个分区吗?如果是这样的话,请说明原因


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

在代理数量大于复制系数的集群中运行Kafka时,多个分区非常有用。因此,当您有5个代理和3个复制代理时,就不需要另外2个代理了。当您有两个复制为3的分区时,您可以在5个代理上划分2*3=6个分区

现在只有一个代理具有两个分区,而其他代理具有一个分区。所以它不是均匀分布的。最好有更多的分区以获得更好的分布

选择多个分区还有其他原因,但关于这方面的文章很多。我解释的是一个很好的经验法则

理想的组合是一个主题的分区数与消费者组中的消费者数为1:1

更准确地说,分区的数量限制了使用者组中使用者的数量(如果使用者多于分区,则它们将处于空闲状态)。使用者可以少于分区。我不认为1:1一定是理想的,这是实际的极限

我将讨论一个主题,该主题有1个分区和n个复制因子(n=消费者组总数,或者我的案例中的消费者)

我看不出复制因子等于消费者群体数量的价值。复制是为了提高恢复能力,即在代理宕机时防止数据丢失。它与消费者的数量没有任何关系,因为对于给定的分区,每个消费者将只使用leaderbroker

有人认为我应该为我的案例实现多个分区吗?如果是这样的话,请说明原因

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

另外,我没有使用生产者/消费者API,因为我没有进行与表/流相关的聚合


听起来你想说你没有使用Kafka Streams API,因为Kafka Streams提供了KTable,KStream及其聚合。

因此,只要顺序不重要,我就应该始终利用分区?是的,我认为我在增加分区数量方面相当保守:-)。是的,很抱歉让人困惑的是,我现在更新了我的问题/