1

我有两个主题:

  • 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")

当两个输入主题的分区不同,并且每个应用程序的实例数量也可能不同时,浮士德如何确保这一点?还是我处理这个问题是错误的?

4

1 回答 1

0

更新(Kstreams 信息,非浮士德):

学到的东西:

  1. 看起来这是要求 JOINing 主题必须具有相同数量的分区,并且我假设 Faust 具有相同的限制。这解释了我上面的担忧......除了......
  2. ...看起来KStreams中有全局表,Faust 1.9+(链接)中有一个相关功能。

希望这是下一个遇到与我上面类似的问题的人的面包屑。

于 2021-03-22T20:55:42.117 回答