繁体   English   中英

Kafka中的动态流拓扑

[英]Dynamic Streams Topology in Kafka

使用Kafka Streams DSL创建Kafka Streams时https://kafka.apache.org/0110/documentation/streams/developer-guide

我们遇到了需要用新的拓扑定义更新Kafka流的情况。

例如:开始时,我们定义了一个拓扑以读取一个主题(源)和目标主题(接收器)。 但是,在配置更改时,我们现在需要阅读2个不同的主题(如果需要,请阅读2个来源)并写入单个目标主题。

从我们现在已经构建的内容来看,拓扑定义是硬编码的,类似于处理器拓扑中的定义。

问题:

  1. 是否可以以声明性的方式(例如在Json或其他方式中)定义拓扑,而无需对拓扑进行编码?

  2. 是否可以重新加载现有的Kafka Stream以使用Kafka Streams拓扑的新定义?

  3. 对于上述#2,Kafka Streams DSL是否提供一种通过外部触发器或系统调用“重新加载”新拓扑定义的方法?

我们正在使用JDK 1.8和Kafka DSL 2.2.0

谢谢,Ayusman

是否可以以声明性的方式(例如在Json或其他方式中)定义拓扑,而无需对拓扑进行编码?

KStreams DSL是声明性的,但我认为您的意思不是DSL?

如果是这样,答案是否定的。但是,您可能要看一下KSQL。

是否可以重新加载现有的Kafka Stream以使用Kafka Streams拓扑的新定义?

您的意思是说,现有的Kafka Streams 应用程序是否可以重新加载处理拓扑的新定义? 如果是这样,答案是否定的。在这种情况下,您将部署新版本的应用程序。

根据旧/新拓扑的定义方式,对应用程序进行简单的滚动升级就足够了(大约:如果拓扑更改很小),但是可能需要分别部署新应用程序,然后在新应用程序部署完毕后进行部署。经过审查,停用旧应用程序。

注意:KStreams是一个Java库,从设计上讲,它不包括操作/管理使用KStreams库的Java应用程序的功能。

对于上述#2,Kafka Streams DSL是否提供一种通过外部触发器或系统调用“重新加载”新拓扑定义的方法?

没有。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM