[英]Understanding kafka streams partition assignor
我有两个主题,一个有 3 个分区,一个有 48 个分区。
最初我使用默认分配器但是当消费者(kubernetes 中的 pod)崩溃时我遇到了一些问题。
发生的事情是,当 pod 再次出现时,它重新分配了主题中的分区 3 个分区和主题中的 0 分区 48。
没有崩溃的两个 pod 从具有 48 个分区的主题中分配了 16 和 32 个分区。
我已经通过使用循环分区分配器解决了这个问题,但现在我对分区的分配方式没有信心,因为我使用的是 kstream-kstream 连接,为此我们需要保证消费者被分配给相同的所有消费者的分区,例如 C1:(t1:p0, t2:p0) C2(t1:p1, t2:p1) 等。
我想到的一件事是,我可以重新键入传入的事件,以便它们重新分区,然后我可以保证这一点吗?
或者也许我不明白默认分区是如何工作的..我很困惑
Kafka Streams 不允许使用自定义分区分配器。 如果您自己设置一个,它将被StreamsPartitionAssignor
[1] 覆盖。 这是为了确保——如果可能的话——在重新平衡期间将分区重新分配给相同的消费者(也称为粘性)。 粘性对于 Kafka Streams 能够尽可能多地重用消费者端的状态存储非常重要。 如果分区没有重新分配给同一个消费者,则需要在重新平衡后从头开始重新创建该消费者中使用的状态存储。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.