我有两个主题:
- 1 个带有事件数据
EventData
的主题(假设5 个分区)——该主题的日志使用 CustomerID 作为键。 - 1 个带有丰富数据的紧凑主题(
EnrichmentKVs
假设3 个分区)——该主题的日志使用相同的 CustomerID 作为键。
目标是将 EnrichmentKV 保存在 Faust 表中,当 EventData 日志流入时,它们会使用该表中的数据进行丰富并发布到新的流/主题。
所以我有两个Faust (python) 应用程序,每个应用程序都有自己运行的实例数量:
- App1(N-instances running)使用 key=CustomerId 发布到 EventData 主题
- App2(正在运行的 M 实例)执行以下操作:
- 更新浮士德表 (
EnrichmentKVsTable
) 以获取来自 EnrichmentKVs 主题的值 - 从 EventData 主题流入,并将浮士德表中的数据与来自的数据流“连接”
Eventdata
- 更新浮士德表 (
我的理解是,App2 的每个实例都只会有一个基于分区键的部分 EnrichmentKV 表。要使“JOIN”工作,任何日志EventData(key="1234")
都必须与日志进入相同的App2实例EnrichmentKVsTable(key="1234")
当两个输入主题的分区不同,并且每个应用程序的实例数量也可能不同时,浮士德如何确保这一点?还是我处理这个问题是错误的?