KStreams - KTable 启动阶段



>KStreams - KTable连接的工作方式非常简单:每次在流中发出新样本时,都会在表上按键查找。

这会导致瞬态阶段的意外行为吗?我们有一个这样的拓扑:

  1. 一个KStream A,我们执行一个选择键,将其转换为流 A1
  2. 一个KStream B,我们分组然后减少,将其变成KTable B1

在启动时,我们在 A 上发布两条记录,在 B 上发布两条记录,以便在 A 上的 selectKey 和 B 上的 groupBy + reduce 之后,键将匹配。但是,我们注意到有时 A1 和 B1 之间的内部连接的样本会失败,而是丢失一些我们期望的输出。

什么是正确的拓扑来确保没有更新丢失?

> KStream-KTable 联接同步是尽力而为的。我们致力于改进,以便为 1.2 版本提供更好的保证。自动取款机,你无能为力。

如果需要严格的保证,则需要使用 transform() 而不是 join() 实现自己的流表连接运算符。您可以将 KTable 存储连接到Transformer,并为联接查找设置自定义逻辑。

相关内容

  • 没有找到相关文章

最新更新