你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

什么是持久任务?

持久任务是 Microsoft 对持久执行的实现,这是一种行业范围内通过自动持久保存其进度来使普通代码具备容错能力的方法。 它是一个以普通代码的方式构建容错工作流和编排的框架。 你无需管理复杂的重试逻辑、状态机或消息队列,而是将业务逻辑写成直接的函数,而 Durable Task 则为你处理状态持久化、自动恢复和分布式协调。

持久任务工作流可以运行数小时、数天甚至数月,在发生任何崩溃、重启或重新部署后,能够可靠地从上一个完成的步骤恢复。 常见用例包括分布式事务、多代理 AI 业务流程、数据处理管道和基础结构管理。

本文其余部分将解释Durable Task的定位、支持的语言和托管模型,以及它的结构,以便你决定如何利用它构建容错应用。

持久任务包括哪些内容

持久任务包括:

关键持久任务用例

当应用程序需要跨分布式服务进行可靠且长时间运行的工作流协调时,请使用 Durable Task。 常见方案包括:

  • 长时间运行进程:Durable Task 能够管理长时间运行的进程的状态和进度,即使存在中断或错误。 示例包括订单处理、数据管道、机器学习模型训练和长时间运行的模拟。
  • 并行与扇出/扇入场景:Durable Task 可以协调将工作扇出到多个在不同机器上并行运行的工作器,然后汇总结果。 示例包括图像处理、映射化简作业和 ETL 工作流。
  • 协调微服务和 API:Durable Task 可以通过复杂的控制流和错误处理协调分布式服务、API 和计算机的工作。 Durable Task 还支持使用 saga 模式的分布式事务,每一步都有补偿逻辑,如果后续步骤失败,这些逻辑会自动运行。
  • 业务流程自动化:持久任务可以自动化复杂且确定性的业务流程,这些流程涉及多步骤、依赖关系、人工参与和长期错误处理。 示例包括供应链管理、文档评审、客户载入和身份验证。
  • 基础结构自动化:Durable Task 可以使用复杂的依赖项和错误处理来管理基础结构预配、配置和部署。 示例包括云资源管理和 CI/CD 管道。
  • 多智能体编排:持久任务可以协调多个AI智能体的工作,确保长期可靠地遵循任务要求,并高效使用复杂多步骤AI流程中的令牌。 示例包括用于深入研究、编码和客户支持的 AI 代理。

这些场景的一个共同点是,它们涉及的工作过于复杂、运行时间过长或过于分散,无法用临时代码可靠管理。 Durable Task提供了底层保证——持久性、容错性和有状态协调——因此你可以用直接的代码表达这些工作。

支持的语言和持久任务托管模型

Durable Task支持两种托管模式中的多种编程语言:Azure Functions(通过Durable Functions扩展)和自托管(通过独立的 Durable Task SDK)。 Azure Functions托管模型提供完全托管的无服务器计算环境,内置扩展和编排功能,而自托管模型支持在任何计算平台上运行持久应用,如Azure 容器应用、Azure Kubernetes 服务、Azure 应用服务或虚拟机。

语言 Azure Functions 自承载
.NET (C#/F#) 是的 是的
JavaScript/TypeScript 是的 是的
Python 是的 是的
Java 是的 是的
Go 否 是的(测试版)
PowerShell 是的 否

注释

Durable Task SDK for Go 是一个面向连接 Durable Task Scheduler 的自托管应用程序的开源测试版。 Durable Functions不支持Go。

有关在Azure Functions和自承载之间进行选择的指导,请参阅选择托管模型。

持久任务架构:SDK 与状态存储后端

Durable Task 有两个主要层:在应用程序代码中使用的 SDK 和用于管理状态 的状态存储后端 。

Durable Task SDK

你可以使用Durable Task SDK在应用代码中编写编排、活动和实体。 它内部处理持久执行的机制——重放编排器函数、管理本地执行上下文,并与状态存储后端通信。 Durable Task在支持的语言和两种托管模式——Azure Functions和自托管——中提供了多种SDK选项。

有关在这些选项之间进行选择的指导,请参阅 “选择托管模型”。

状态存储后端

状态存储后端持久保存编排状态,维护执行历史,并协调跨计算实例的分布式扩展。

推荐的状态存储选项是Durable Task Scheduler——一个完全托管的 Azure 服务,专为持久任务工作负载设计并高度优化。 它适用于Durable Functions和独立的 Durable Task SDK,并提供最丰富的功能集,无需管理存储基础结构。

或者,Durable Functions 支持多种自带(BYO)存储选项。 这些选项让你对状态存储位置有更多控制权,但需要你自己配置和管理底层基础设施。 BYO 存储后端目前仅适用于Durable Functions。

有关存储选项的详细信息,请参阅 存储提供程序。

额外的持久任务资源

研究出版物

Microsoft与Microsoft Research合作开发了Durable Task。 因此,团队产出了研究论文和工件,包括:

视频概述

以下视频重点介绍了Durable Functions的优势:

后续步骤