我正在研究将现有Flink应用程序/拓扑转换为使用KafkaStreams的 POC 。我的问题是关于部署的。
具体来说——在 Flink 中,将“工作节点”添加到 flink 安装中,然后在拓扑中添加更多并行化以跟上不断增长的数据速率。
随着数据速率的增加,如何增加 KStreams 的容量?KStreams 会自动处理这个吗?我是否启动更多进程(ala 微服务)?
还是我在这里错过了大局?
我正在研究将现有Flink应用程序/拓扑转换为使用KafkaStreams的 POC 。我的问题是关于部署的。
具体来说——在 Flink 中,将“工作节点”添加到 flink 安装中,然后在拓扑中添加更多并行化以跟上不断增长的数据速率。
随着数据速率的增加,如何增加 KStreams 的容量?KStreams 会自动处理这个吗?我是否启动更多进程(ala 微服务)?
还是我在这里错过了大局?
我是否启动更多进程(ala 微服务)?
简短的回答是肯定的:
有关更多详细信息,请参阅http://docs.confluent.io/3.0.0/streams/developer-guide.html#elastic-scaling-of-your-application上的 Kafka Streams 文档(不幸的是,Kafka Streams 上的 Apache Kafka 文档不'还没有这些细节)。
还是我在这里错过了大局?
大图是图片实际上很好而且很小。:-)
所以让我添加以下内容,因为我觉得许多用户对其他相关技术的复杂性感到困惑,然后并不真正期望您可以以更简单的方式进行流处理(包括其部署),例如您可以使用 Kafka Streams:
Kafka Streams 应用程序是一个普通的、普通的旧 Java 应用程序,恰好使用 Kafka Streams 库。与现有流处理技术的一个关键区别在于,通过使用 Kafka Streams 库,您的应用程序变得可扩展、弹性、容错等,而无需像您想要的那样添加特殊的“处理集群”来添加机器为 Flink、Spark、Storm 等做。Kafka Streams 部署模型更加简单和容易:只需启动或停止应用程序的其他实例(即实际上相同的代码)。这基本上适用于任何与部署相关的工具,包括但不限于 Puppet、Ansible、Docker、Mesos、YARN。您甚至可以通过运行手动执行此操作java ... YourApp
。