kafkastreams-添加更多处理能力

t2a7ltrp  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(317)

我正在处理一个poc,将现有的flink应用程序/拓扑转换为使用kafkastreams。我的问题是关于部署。
具体地说,在flink中,会在flink安装中添加“工作节点”,然后在拓扑中添加更多的并行化,以跟上不断增长的数据速率。
随着数据速率的增加,如何增加kstreams的容量?kstreams是否自动处理此问题?我是否启动更多流程(微服务)?
还是我错过了这里的大局?

wnvonmuf

wnvonmuf1#

我是否启动更多流程(微服务)?
简单的回答是肯定的:
答案1(增加容量):要扩展,只需启动流处理应用程序的另一个示例,例如在另一台机器上。应用程序的示例将相互感知并自动开始共享处理工作。这可以在实时操作期间完成,并且不会丢失数据!
答案2(移除容量):只需停止流处理应用程序的一个或多个正在运行的示例,例如关闭4个正在运行的示例中的2个。应用程序的其余示例将意识到其他示例已停止,并自动接管已停止示例的处理工作。这可以在实时操作期间完成,并且不会丢失数据!
参见Kafka流文档http://docs.confluent.io/3.0.0/streams/developer-guide.html#elastic-扩展应用程序以获取更多详细信息(不幸的是,kafka streams上的apachekafka文档还没有这些详细信息)。
还是我错过了这里的大局?
总的来说,这幅画其实很漂亮,很小。:-)
因此,让我补充以下内容,因为我觉得许多用户对其他相关技术的复杂性感到困惑,因此并不期望您能够以更简单的方式进行流处理(包括其部署),就像您可以使用kafka流那样:
kafka streams应用程序是一个普通的老java应用程序,恰好使用kafka streams库。现有流处理技术的一个关键区别在于,通过使用kafka流库,您的应用程序变得可伸缩、有弹性、容错等,而不需要特殊的“处理集群”来添加机器,就像您对flink、spark、storm所做的那样,kafka streams部署模型简单得多:只需启动或停止应用程序的其他示例(即,字面上相同的代码)。这基本上适用于任何与部署相关的工具,包括但不限于puppet、ansible、docker、mesos和yarn。您甚至可以通过运行 java ... YourApp .

相关问题