本文介绍了Kafka Streams API中的任务有什么用途的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试了解Kafka Streams API的体系结构,在documentation:
中遇到了这一点将处理器拓扑分解为任务的所有标准是什么?只是流/主题中的分区数还是更多。有没有人能举个例子解释一下上面的意思?如果创建任务的目的只是为了扩展,它们不应该都具有相同的拓扑吗?
推荐答案
任务是原子并行处理单元。
拓扑分为子拓扑(子拓扑是内存中转发数据的连接组件;不同的子拓扑通过主题连接)。对于每个子拓扑,输入主题分区的数量决定了创建的任务数量。如果有多个输入主题,则所有主题上的最大分区数将确定任务数。
如果您想知道Kafka Streams应用程序的子拓扑,可以调用Topology#describe()
:返回的TopologyDescription
可以通过toString()
打印,也可以遍历子拓扑及其对应的DAG。
Kafka Streams应用程序有一个拓扑,该拓扑可能有一个或多个子拓扑。您可以在Data Reprocessing with the Streams API in Kafka: Resetting a Streams Application一文中找到包含两个子拓扑的拓扑。
这篇关于Kafka Streams API中的任务有什么用途的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!