如果您的使用者比分区少,这是否意味着您不会使用给定主题上的所有消息?在云环境中,您应该如何跟踪有多少消费者正在运行以及有多少消费者指向给定的主题分区?如果给定的主题分区上有多个使用者怎么办?我猜消费者必须以某种方式跟踪它已经处理了哪些消息以防重复?
qv7cva1a1#
1) 不,这意味着您将由一个消费者处理多个消费者。2) kafka从不将同一个分区分配给多个使用者,因为这将违反分区内的顺序保证。3) 您可以在客户端代码中实现ConsumerBalanceListener,每当从使用者分配或撤消分区时,都会调用该代码。您可能想看一下这篇文章的“为使用者分配分区”部分。在我的示例中,您创建了一个带有3个分区的主题,然后一个带有ConsumerBalanceListener的使用者告诉您哪个使用者正在处理哪个分区。现在,您可以通过启动一个或多个消费者来玩它,看看会发生什么。示例代码在github中http://www.javaworld.com/article/3066873/big-data/big-data-messaging-with-kafka-part-2.html
ie3xauqp2#
事实上,每个消费者都属于一个消费群体。当kafka集群将数据发送到使用者组时,分区的所有记录都将发送到该组中的单个使用者。如果一个组中的分区多于使用者,则一些使用者将使用来自多个分区的数据。如果一个群体中的消费者比行政区多,一些消费者将得不到任何数据。如果您向组中添加新的使用者示例,它们将从旧成员中接管一些部分。如果从组中删除使用者(或使用者死亡),则其分区将重新分配给其他成员。现在让我们看看你的问题:如果您的使用者比分区少,这是否意味着您不会使用给定主题上的所有消息?不可以。同一使用者组中的某些使用者将使用来自多个分区的数据。在云环境中,您应该如何跟踪有多少消费者正在运行以及有多少消费者指向给定的主题分区?Kafka会处理的。如果新的消费者加入了这个组织,或者老消费者去世了,Kafka会重新平衡。如果给定的主题分区上有多个使用者怎么办?不能有多个使用者(在使用者组中)使用单个分区中的数据。但是,如果有多个使用者组,则每个使用者组中的一个(并且只有一个)使用者可以使用相同的分区。
2条答案
按热度按时间qv7cva1a1#
1) 不,这意味着您将由一个消费者处理多个消费者。2) kafka从不将同一个分区分配给多个使用者,因为这将违反分区内的顺序保证。3) 您可以在客户端代码中实现ConsumerBalanceListener,每当从使用者分配或撤消分区时,都会调用该代码。
您可能想看一下这篇文章的“为使用者分配分区”部分。在我的示例中,您创建了一个带有3个分区的主题,然后一个带有ConsumerBalanceListener的使用者告诉您哪个使用者正在处理哪个分区。现在,您可以通过启动一个或多个消费者来玩它,看看会发生什么。示例代码在github中
http://www.javaworld.com/article/3066873/big-data/big-data-messaging-with-kafka-part-2.html
ie3xauqp2#
事实上,每个消费者都属于一个消费群体。当kafka集群将数据发送到使用者组时,分区的所有记录都将发送到该组中的单个使用者。
如果一个组中的分区多于使用者,则一些使用者将使用来自多个分区的数据。如果一个群体中的消费者比行政区多,一些消费者将得不到任何数据。如果您向组中添加新的使用者示例,它们将从旧成员中接管一些部分。如果从组中删除使用者(或使用者死亡),则其分区将重新分配给其他成员。
现在让我们看看你的问题:
如果您的使用者比分区少,这是否意味着您不会使用给定主题上的所有消息?
不可以。同一使用者组中的某些使用者将使用来自多个分区的数据。
在云环境中,您应该如何跟踪有多少消费者正在运行以及有多少消费者指向给定的主题分区?
Kafka会处理的。如果新的消费者加入了这个组织,或者老消费者去世了,Kafka会重新平衡。
如果给定的主题分区上有多个使用者怎么办?
不能有多个使用者(在使用者组中)使用单个分区中的数据。但是,如果有多个使用者组,则每个使用者组中的一个(并且只有一个)使用者可以使用相同的分区。