本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Map 状态处理模式
根据您希望如何处理数据集中的项目,Step Functions 为 Map
状态提供以下处理模式。
-
内联 – 限制并发模式。在此模式下,
Map
状态的每次迭代都在包含Map
状态的工作流的上下文中运行。Step Functions 会将这些迭代的执行历史记录添加到父工作流的执行历史记录中。默认情况下,Map
状态以内联模式运行。在此模式下,
Map
状态仅接受 JSON 数组作为输入。此外,此模式最多支持 40 次并发迭代。有关更多信息,请参阅在内联模式下使用 Map 状态。
-
分布式 – 高并发模式。在此模式下,
Map
状态将每次迭代作为子工作流执行运行,从而实现多达 1 万个并行子工作流执行的高并发数。每个子工作流执行都有自己的、独立于父工作流的执行历史记录。在此模式下,
Map
状态可以接受 JSON 数组或 Amazon S3 数据来源(例如 CSV 文件)作为其输入。有关更多信息,请参阅使用分布式模式下的 Map 状态。
应使用的模式取决于您希望如何处理数据集中的项目。如果工作流的执行历史记录不超过 2.5 万个条目,或者需要的并发迭代次数不超过 40 次,则可以使用内联模式的 Map
状态。
当您需要编排满足以下任意条件组合的大规模并行工作负载时,请使用分布式模式的 Map
状态:
数据集的大小超过 256 KB。
该工作流程的执行事件历史记录超过 2.5 万个条目。
您需要一个超过 40 次并行迭代的并发数。
内联模式和分布式模式的区别
下表突出显示了内联模式和分布式模式之间的区别。
内联模式 | 分布式模式 |
---|---|
Supported data sources | |
接受从工作流中上一步传递的 JSON 数组作为输入。 |
接受以下数据来源作为输入:
|
Map iterations | |
在此模式下, |
在此模式下, |
Maximum concurrency for parallel iterations | |
允许尽可能同时运行多达 40 次迭代。 |
允许运行多达 1 万个并行子工作流执行,一次处理数百万个数据项。 |
Input payload and event history sizes | |
强制限制 256 KB 的输入有效负载大小,执行事件历史记录中最多包含 2.5 万个条目。 |
允许您无视有效负载大小限制,因为 在此模式下,您还可以无视执行历史记录的限制,因为 |
Monitoring and observability | |
您可以通过控制台或调用 您还可以通过 CloudWatch 和 X-Ray 查看执行历史记录。 |
当您运行分布式模式下的 有关更多信息,请参阅检查分布式 Map 状态的 Map Run。 |