Kafka Streams-通过交互式查询在远程存储中进行查找的最佳方式



我有点困惑,我想澄清一下。我正在做一些事情。我想要一个Kafka Streams拓扑,它将有五个独立的KStream从各自的主题中读取数据,并将数据转储到一个大型的整体主题中。接下来,我将有一个GlobalKTable,它将从这个单一的主题中读取并实现一个全局存储,比如说lookupStore。我想让这个物化的全球商店基本上成为一个"实体店";查找";表,用于其他Kafka Streams应用程序。我已经阅读了一些关于使用具有application.server配置的RPC层来公开这一点的内容,该配置将以一些独特的host:port的形式出现。

现在,我希望有许多单独的微服务,每个都是Kafka Streams应用程序,它们将处理来自KStream的事件,然后通过交互式查询在lookupStore上进行查找。例如,基于对lookupStore的查找是否返回值的.filter()操作。这就是我的困惑。。。假设我对host:port上公开的RPC层进行了硬编码,我如何专门查询lookupStore来查询它。如果这是在同一拓扑/本地实例中,你可以做一些类似lookupStore.get("key")的事情。。。但是如何在远程Kafka Streams实例中做到这一点呢?

或者连接到RPC层是否将该状态存储暴露给远程应用程序;知道";您可以像查询本地实例一样查询lookupStore吗?这可行吗?还是我走错了路?

如果您的微服务(即流应用程序(与主流应用程序(生成GlobalKTable(共享同一Kafka集群,则它们可以访问同一应用程序对应的Table主题并执行KTable join或lookupStore.get("key"(。此外,不建议在流应用程序内执行远程API调用以执行查找,因为延迟。如果两个Kafak集群不同,那么您可以探索使用镜像生成器之类的东西来复制主题(GlobalKTable和State Store更改日志主题(。

相关内容

  • 没有找到相关文章

最新更新