Kafka 中的动态流拓扑
Dynamic Streams Topology in Kafka
在使用 Kafka Streams DSL 创建 Kafka Streams 时
https://kafka.apache.org/0110/documentation/streams/developer-guide
我们遇到了需要使用新拓扑定义更新 Kafka Streams 的场景。
例如:
当我们开始时,我们定义了一个拓扑来从一个主题(Source)和一个目标主题(Sink)中读取。
但是,在配置更改时,我们现在需要从 2 个不同的主题(如果你愿意的话,2 个源)读取并写入一个目标主题。
根据我们现在构建的内容,拓扑定义是硬编码的,类似于 processor topology 中定义的内容。
问题:
是否可以以声明方式定义拓扑(比如 Json 或其他方式),而不需要对拓扑进行编码?
是否可以重新加载现有的 Kafka Stream 以使用 Kafka Streams 拓扑的新定义?
对于上面提到的 #2,Kafka Streams DSL 是否提供了一种通过外部触发器或系统调用来 "reload" 新拓扑定义的方法?
我们正在使用 JDK 1.8 和 Kafka DSL 2.2.0
谢谢,
阿尤斯曼
Is it possible to define topology in a declarative way (say in a Json or something else), which doesn't require a codification of the topology?
KStreams DSL 是声明式的,但我假设您指的不是 DSL?
如果是这样,答案是否定的。不过,您可能想看看 KSQL。
Is it possible to reload an existing Kafka Stream to use a new definition of the Kafka Streams Topology?
您的意思是如果现有的 Kafka Streams 应用程序 可以重新加载处理拓扑的新定义?如果是这样,答案是否定的。在这种情况下,您需要部署新版本的应用程序。
根据 old/new 拓扑的定义方式,应用程序的简单滚动升级可能就足够了(大致:如果拓扑更改很小),但您可能需要单独部署新应用程序并且然后,一旦新应用程序通过审核,就停用您的旧应用程序。
注意:KStreams 是一个 Java 库,在设计上不包含 operate/manage 使用 KStreams 库的 Java 应用程序的功能。
For #2 mentioned above, does Kafka Streams DSL provide a way to "reload" new topology definitions by way of an external trigger or system call?
没有
在使用 Kafka Streams DSL 创建 Kafka Streams 时 https://kafka.apache.org/0110/documentation/streams/developer-guide
我们遇到了需要使用新拓扑定义更新 Kafka Streams 的场景。
例如: 当我们开始时,我们定义了一个拓扑来从一个主题(Source)和一个目标主题(Sink)中读取。 但是,在配置更改时,我们现在需要从 2 个不同的主题(如果你愿意的话,2 个源)读取并写入一个目标主题。
根据我们现在构建的内容,拓扑定义是硬编码的,类似于 processor topology 中定义的内容。
问题:
是否可以以声明方式定义拓扑(比如 Json 或其他方式),而不需要对拓扑进行编码?
是否可以重新加载现有的 Kafka Stream 以使用 Kafka Streams 拓扑的新定义?
对于上面提到的 #2,Kafka Streams DSL 是否提供了一种通过外部触发器或系统调用来 "reload" 新拓扑定义的方法?
我们正在使用 JDK 1.8 和 Kafka DSL 2.2.0
谢谢, 阿尤斯曼
Is it possible to define topology in a declarative way (say in a Json or something else), which doesn't require a codification of the topology?
KStreams DSL 是声明式的,但我假设您指的不是 DSL?
如果是这样,答案是否定的。不过,您可能想看看 KSQL。
Is it possible to reload an existing Kafka Stream to use a new definition of the Kafka Streams Topology?
您的意思是如果现有的 Kafka Streams 应用程序 可以重新加载处理拓扑的新定义?如果是这样,答案是否定的。在这种情况下,您需要部署新版本的应用程序。
根据 old/new 拓扑的定义方式,应用程序的简单滚动升级可能就足够了(大致:如果拓扑更改很小),但您可能需要单独部署新应用程序并且然后,一旦新应用程序通过审核,就停用您的旧应用程序。
注意:KStreams 是一个 Java 库,在设计上不包含 operate/manage 使用 KStreams 库的 Java 应用程序的功能。
For #2 mentioned above, does Kafka Streams DSL provide a way to "reload" new topology definitions by way of an external trigger or system call?
没有