Vir*_*raj 1 apache-kafka apache-kafka-streams
我试图了解 Kafka Streams API 的架构,并在文档中遇到了这一点:
应用程序的处理器拓扑通过将其分解为多个任务来扩展
将处理器拓扑分解为任务的所有标准是什么?仅仅是流/主题中的分区数量还是更多。
然后,任务可以根据分配的分区实例化自己的处理器拓扑
有人可以用例子解释上面的意思吗?如果创建任务只是为了扩展,那么它们不应该具有相同的拓扑吗?
任务是原子并行处理单元。
拓扑分为子拓扑(子拓扑是在内存中转发数据的“连接组件”;不同的子拓扑通过主题连接)。对于每个子拓扑,输入主题分区的数量决定了创建的任务数量。如果有多个输入主题,则所有主题的最大分区数决定任务数。
如果您想了解 Kafka Streams 应用程序的子拓扑,您可以调用Topology#describe():返回的结果TopologyDescription可以仅通过打印toString(),也可以遍历子拓扑及其相应的 DAG。
Kafka Streams 应用程序具有一种拓扑,该拓扑可能具有一个或多个子拓扑。您可以在文章使用 Kafka 中的 Streams API 进行数据重新处理:重置 Streams 应用程序中找到具有 2 个子拓扑的拓扑。
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |