单个消费者可以读取 kafka 主题的多个分区吗?
Can single consumer read from multiple partitions of a kafka topic?
有一个kafka主题有16个分区
对于给定的消费者组名称,我们目前正在启动单一消费者以阅读主题。
单个消费者是否阅读了该主题的 partition 0
(仅)?
如果 partition 0
的消息变空了,消费者是否开始从下一个分区读取(partiton 1
...等等)?
我们可以选择启动多个消费者(具有相同的消费者组名称)来读取相同的主题(有 16 个分区)。可以维护多少消费者,并行读取多个分区?
组中的消费者尽可能公平地划分主题分区,方法是确定每个分区仅由组中的单个消费者使用。当消费者数少于分区数时,同一消费者将从多个分区读取消息。
在您的场景中,单个消费者将从您的所有分区中读取数据。这种类型的消费者被称为独家消费者。当消费者组只有一个消费者时,就会发生这种情况。这样的消费者必须连接到它需要的所有分区。
理想情况下,分区的数量应该等于消费者的数量。如果消费者的数量更多,多余的消费者就会闲置,浪费客户端资源。如果分区数量更多,一些消费者将从多个分区读取,除非消息的顺序很重要,否则这应该不是问题。
订购
Kafka 不保证分区之间消息的顺序。它确实提供分区内的排序。因此,如果只订阅一个分区,Kafka 可以维护消费者的消息顺序。
如果在您的用例中需要消息排序,则消息应该使用在处理过程中分组的键来排序。
您有一个包含 16 个分区的主题
With a given consumer group name, you are currently launching single consumer to read from the topic
This single consumer will read from all partitions.
因为您可以启动多个消费者(在同一消费者组中)。
For 16 partitions you should have max 16 consumer listening to each partitions. In Kafka within a consumer group you can have max 1 consumer per partition.
有一个kafka主题有16个分区
对于给定的消费者组名称,我们目前正在启动单一消费者以阅读主题。
单个消费者是否阅读了该主题的
partition 0
(仅)? 如果partition 0
的消息变空了,消费者是否开始从下一个分区读取(partiton 1
...等等)?我们可以选择启动多个消费者(具有相同的消费者组名称)来读取相同的主题(有 16 个分区)。可以维护多少消费者,并行读取多个分区?
组中的消费者尽可能公平地划分主题分区,方法是确定每个分区仅由组中的单个消费者使用。当消费者数少于分区数时,同一消费者将从多个分区读取消息。
在您的场景中,单个消费者将从您的所有分区中读取数据。这种类型的消费者被称为独家消费者。当消费者组只有一个消费者时,就会发生这种情况。这样的消费者必须连接到它需要的所有分区。
理想情况下,分区的数量应该等于消费者的数量。如果消费者的数量更多,多余的消费者就会闲置,浪费客户端资源。如果分区数量更多,一些消费者将从多个分区读取,除非消息的顺序很重要,否则这应该不是问题。
订购
Kafka 不保证分区之间消息的顺序。它确实提供分区内的排序。因此,如果只订阅一个分区,Kafka 可以维护消费者的消息顺序。
如果在您的用例中需要消息排序,则消息应该使用在处理过程中分组的键来排序。
您有一个包含 16 个分区的主题
With a given consumer group name, you are currently launching single consumer to read from the topic This single consumer will read from all partitions.
因为您可以启动多个消费者(在同一消费者组中)。
For 16 partitions you should have max 16 consumer listening to each partitions. In Kafka within a consumer group you can have max 1 consumer per partition.