Kafka流API中的任务用于什么目的

时间:2018-03-12 22:32:10

标签: apache-kafka apache-kafka-streams

我正在尝试了解Kafka流API的架构,并在documentation中遇到了这个问题:

  

应用程序的处理器拓扑通过将其分解为多个任务来缩放

将处理器拓扑分解为任务的所有标准是什么?它只是流/主题中的分区数量还是更多。

  

然后,任务可以根据分配的分区实例化自己的处理器拓扑

有人可以通过一个例子解释上述内容吗?如果仅为了缩放的目的创建任务,那么它们是否都具有相同的拓扑?

1 个答案:

答案 0 :(得分:4)

任务是原子并行处理单元。

拓扑分为子拓扑(子拓扑是"连接组件"在内存中转发数据;不同的子拓扑通过主题连接)。对于每个子拓扑,输入主题分区的数量决定了创建的任务数。如果有多个输入主题,则所有主题的最大分区数决定了任务数。

如果您想了解Kafka Streams应用程序的子拓扑,可以致电Topology#describe():返回的TopologyDescription可以通过toString()打印,也可以遍历 - 拓扑及其相应的DAG。