为什么在 kafka 中对两个 Kstreams 进行联合分区需要两个流的分区数量相同?

Why does co-partitioning of two Kstreams in kafka require same number of partitions for both the streams?

我想知道为什么在 kafka 中对两个 Kstreams 进行联合分区需要两个流的分区数量与下面 URL 的文档中给出的相同: enter link description here

顾名思义,“co-partition”就是将不同topic但key相同的数据放到同一个Kafka Streams应用实例中。如果您没有相同数量的分区,则无法获得此行为。

假设您的主题 A 有 2 个分区,主题 B 有 3 个分区。因此,可能会发生具有键 X 的一条记录被散列到分区 A-0 和 B-1(即,不同的分区号)。但是,对于不同的密钥 Y,它可能被散列为 A-0 而不是 B-2。

只有当两个主题的分区数相同时,具有相同键的记录最终会出现在相同的分区中(当然是不同的主题),这允许处理 A-0/B-0 和 A-1/B-1 等等。