我在网上阅读了一些指南,如果您使用密钥排序,新分区最终会破坏该排序,我真的不知道如何。这真的会发生吗?
问问题
183 次
1 回答
1
是的,这就是通常发生的事情。更准确地说,不能保证旧的排序保持不变。
消息的划分基本上是通过
hash(key) % number_of_partitions
让我们假设您有一个包含两个分区的主题。您的数据(键:值)如下所示
a:1
b:1
c:1
a:2
b:2
c:2
现在,这些消息将进入两个分区:
partition0: a:1, b:1, a:2, b:2
partition1: c:1, c:2
如果您现在添加一个分区并在主题中生成新消息a:3, b:3, c:3
,您最终可能会像这样:
partition0: a:1, b:1, a:2, b:2, a:3
partition1: c:1, c:2, c:3
partition2: b:3
现在,使用来自该主题的消息,您可能会在处理b:3
之前结束处理,b:2
因为一个消费者阅读partition0
可能比同一个消费者组阅读的另一个消费者花费更长的时间partition2
。
于 2020-05-05T09:04:22.683 回答