哪个版本的 Kafka Stream 效率更高?

Which version of Kafka Stream would be more efficient?

我正在尝试对 Kafka Stream 进行编程,我必须加入两个流,我想问一下哪个选项更有效?

我有一个带有 AvroObject1 的 Kafka TopicA 和 1000 万个 AvroObject1,另一个 TopicB 带有 AvroObject2 和 50000 个 AvroObject2。

以下哪一种流连接配置会更有效(或者会有什么不同?)

avroObject1Stream
   .join(avroObject2Stream)

avroObject2Stream
  .join(avroObject1Stream)

作为后续问题,在 TopicA 我有 1 天的保留时间,TopicB 有 10 天的保留时间,我使用以下 JoinWindows 配置....

avroObject1Stream
   .join(avroObject2Stream,
            JoinWindow.of(Duration.ofDays(10)).grace(Duration.ofDays(10)))

现在我知道流连接主题的日志保留是 JoinWindows 维护时间 + 1 天(开箱即用)但这对 TopicA 1 天保留意味着什么,AvroObject1 将从 TopicA 消失早于 1 天,但 1 天后它们是否仍会在 Stream Join Topic 中可见,或者 Kafka 保留操作将使它们从 Join Topic 中消失?

感谢解答...

它是流处理,因此,"number of objects" 无关紧要。无论如何,流在概念上是无限的。因此,两个程序是相同的,内部连接没有区别,流是左边的,哪个流是右边的。

连接的更改日志保留时间不会影响您输入主题的保留时间。对于连接,基本上发生的是,每个输入记录都被复制到一个本地存储和一个额外的变更日志主题中。如果您的数据从输入主题中删除,则数据不会从更新日志主题的存储中删除。存储和更改日志主题在存储保留时间过后删除其记录副本。