在没有 Kafka-Streams 的情况下在 Kafka 上进行共同分区

问题描述 投票:0回答:1

我很好奇 kafka 是否默认在消费者组内进行共同分区,或者这是否是 kafka-streams 添加的功能。

例如:假设我有一个消费者组

group-1
,该组消费主题
A
B
,这两个主题都有 10 个分区。如果我使用相同的密钥
A
B
ID-1
生成记录,我是否可以保证包含带有
A
的条目的
B
ID-1
的分区将位于同一服务器上实例?

谢谢!

apache-kafka apache-kafka-streams
1个回答
0
投票

共同分区涉及数据如何跨分区分布; Kafka 不直接管理键,它只知道分区。假设相同的密钥将始终进入相同的分区(这取决于 Kafka Producer 中使用的

partitioner.class
,默认值正是这样做的)。

在消费者方面,共同分区受

partition.assignment.strategy
的影响。默认设置为
range
。当消费具有相同分区数且键分区一致的主题时,每个消费者组成员将处理相同的分区号(所有 p0、所有 p1 等),从而使共同分区有效。

例如,使用

round-robin

 作为 
partition.assignment.strategy
 会使共同分区无效。当使用具有不同分区数量的多个主题,并且您希望在消费者实例之间均匀分配分区消耗时(其中 
range
 将在消费者之间创建不均匀的分区分配),可以使用此方法。这就是为什么 Kafka Streams 可以对主题进行重新分区,以确保相同数量的分区通过共同分区来处理数据。

© www.soinside.com 2019 - 2024. All rights reserved.