如果我有多个应用程序实例,并且我要加入两个主题,则每个实例必须具有相同的分区才能加入数据。同时,它必须在实例之间平均分配分区。
[如果我猜到了,我认为它将为第一个主题随机请求一个分区,将其保留在上下文中,然后为参与该连接的所有其他主题请求一个相同的分区?
任何人都可以确认吗?
涉及流连接时,最好具有基础主题co-partitioned。这样,您就不必真正处理任何奇怪的行为。
这意味着,由于Kafka默认情况下是按键对数据进行分区的,因此您将在联接条件中使用的键用作kafka主题中消息的键。这样,与消费者方的Range分配策略(partition.assignment.strategy
)一起,您将获得最佳联接。
必要条件是两个主题中的分区数量相同。
阅读更多here。