Apache kafka 如果您的使用者比分区少,会发生什么?

Apache kafka 如果您的使用者比分区少,会发生什么?,apache-kafka,Apache Kafka,如果您的使用者比分区少,这是否意味着您不会使用给定主题上的所有消息 在云环境中,您应该如何跟踪有多少用户正在运行以及有多少用户指向给定的主题#分区 如果给定主题分区上有多个使用者,该怎么办?我猜消费者必须以某种方式跟踪其已处理的消息,以防重复?1)不,这意味着您将由一个消费者处理多个消费者。 2) Kafka从不将同一分区分配给多个使用者,因为这将违反分区内的订单保证。 3) 您可以在客户机代码中实现ConsumerBalanceListener,每当从使用者分配或撤销分区时都会调用该代码 您可

如果您的使用者比分区少,这是否意味着您不会使用给定主题上的所有消息

在云环境中,您应该如何跟踪有多少用户正在运行以及有多少用户指向给定的主题#分区

如果给定主题分区上有多个使用者,该怎么办?我猜消费者必须以某种方式跟踪其已处理的消息,以防重复?

1)不,这意味着您将由一个消费者处理多个消费者。 2) Kafka从不将同一分区分配给多个使用者,因为这将违反分区内的订单保证。 3) 您可以在客户机代码中实现ConsumerBalanceListener,每当从使用者分配或撤销分区时都会调用该代码

您可能想看一看这篇文章,特别是“为消费者分配分区”部分。在这里,我有一个示例,您使用3个分区创建主题,然后使用ConsumerBalanceListener创建一个消费者,告诉您哪个消费者正在处理哪个分区。现在,您可以通过启动一个或多个消费者来使用它,看看会发生什么。示例代码位于github中


事实上,每个消费者都属于一个公司。当Kafka cluster向使用者组发送数据时,分区的所有记录都将发送给该组中的单个使用者

如果组中的分区多于使用者,则一些使用者将使用来自多个分区的数据。如果一个组中的消费者多于分区,则一些消费者将无法获得任何数据。如果您向组中添加新的使用者实例,它们将从旧成员中接管一些partition。如果从组中删除使用者(或使用者死亡),则其分区将重新分配给其他成员

现在让我们来看看你的问题:

如果您的使用者比分区少,这是否意味着您不会使用给定主题上的所有消息

否。同一使用者组中的某些使用者将使用来自多个分区的数据

在云环境中,您应该如何跟踪有多少用户正在运行以及有多少用户指向给定的主题#分区

卡夫卡会处理好的。如果新消费者加入该组织,或者老消费者死亡,卡夫卡将进行重新平衡

如果给定主题分区上有多个使用者,该怎么办

不能有多个使用者(在使用者组中)使用来自单个分区的数据。但是,如果有多个使用者组,那么每个使用者组中的一个(并且只有一个)使用者可以使用相同的分区