本文内容:
- 使用协调框架的好处。
- 哪种框架最适合你的方案。
Azure 提供了两个面向开发人员的业务流程框架,可用于生成应用:Azure Functions 中托管的应用的 Durable Functions ,以及托管在其他计算平台上的应用的 Durable Task SDK 。 业务流程(也称为 工作流)涉及排列和协调多个(长时间运行)的任务或进程(通常涉及多个系统)以某种顺序执行。 业务流程框架保证 持久执行,这意味着当发生中断或基础结构故障时,执行可以在另一个进程或计算机中从故障点继续执行。 Durable Task SDK 和 Durable Functions 通过内置状态持久性和自动重试确保业务流程持久执行,从而无需额外设计容错架构即可编写业务流程。
需要协调的场景
以下这些方案需要利用 Durable Task SDK 和 Durable Functions 的常见协调模式来进行工作流编排:
- 函数链接: 对于涉及顺序步骤的方案,每个步骤可能取决于上一步的输出。
- 扇出/扇入: 对于批处理作业、ETL(提取、传输和加载),以及需要并行处理的任何方案。
- 人工交互: 对于双重身份验证,需要人工干预的工作流。
- 异步 HTTP API: 在任何场景下,适用于客户端不希望等待长时间任务完成的情况。
以下两种方案共享 函数链接 模式。
在电子商务网站上处理订单
假设你创建了一个电子商务网站。 您的网站可能需要任何客户购买的订单处理工作流。 工作流可能包括以下顺序步骤:
- 检查清单
- 处理付款
- 更新清单
- 生成发票
- 发送订单确认
调用 AI 代理来规划行程
在此方案中,假设你需要创建智能行程规划器。 规划者应遵循一系列已知步骤:
- 根据用户要求建议想法
- 获取首选项确认
- 进行所需的预订
可以为每个任务实现 AI 代理,然后编写按特定顺序调用这些代理的业务流程。
业务流程框架选项
Durable Functions 和 Durable Task SDK 均以多种语言提供,但它们的使用方式存在一些差异。 以下各节介绍了每个框架选项的重要差异和用例。
持久性函数
作为 Azure Functions 的一项功能, Durable Functions 继承大量资产,例如:
- 通过 Functions 扩展与其他 Azure 服务集成
- 本地开发体验
- 无服务器定价模型
- 在 Azure 应用服务和 Azure 容器应用中托管
Durable Functions 在 存储后端 中保留状态,并支持:
- 两个“自带”(BYO) 后端:
- Azure 存储
- Microsoft SQL
- Azure 托管后端:
何时使用 Durable Functions
如果需要使用工作流生成事件驱动应用,请考虑使用 Durable Functions。 Azure Functions 扩展提供与其他 Azure 服务的集成,使构建事件驱动的方案变得简单。 例如,使用 Durable Functions 的情况下:
- 当消息传入 Azure 服务总线或文件上传到 Azure Blob 存储时,可以轻松启动业务流程。
- 可以使用 Azure Functions 的计时器和 HTTP 触发器轻松构建定期运行或响应 HTTP 请求的编排。
考虑 Durable Functions 的另一个原因是你已编写 Azure Function 应用并意识到需要工作流。 由于 Durable Functions 编程模型类似于 Function,因此可以加速开发。
试试看
浏览以下快速入门或示例之一,了解更多关于 Durable Functions 的信息。
快速入门
快速入门 | DESCRIPTION | |
---|---|---|
持久任务计划程序(预览版) | 使用 Durable Task Scheduler 创建 Durable Functions 应用 | 创建一个“hello world”Durable Functions 应用,该应用使用 Durable Task Scheduler 作为后端、在本地测试并发布到 Azure。 |
Azure 存储 | 使用 Azure 存储后端创建 Durable Functions 应用: - .NET - Python - JavaScript/TypeScript - 爪哇岛 - PowerShell |
创建一个“hello world”Durable Functions 应用,该应用使用 Azure 存储作为后端、在本地测试并发布到 Azure。 |
MSSQL | 使用 MSSQL 创建 Durable Functions 应用 | 创建一个“hello world”Durable Functions 应用,该应用使用 MSSQL 作为后端、在本地测试并发布到 Azure。 |
示例
示例 | DESCRIPTION | |
---|---|---|
订单处理工作流 | 使用 Durable Functions 创建订单处理工作流: - .NET - Python |
此示例实现订单处理工作流,其中包括检查库存、处理付款、更新库存和通知客户。 |
智能 PDF 摘要生成器 | 创建使用 Durable Functions 处理 PDF 的应用: - .NET - Python |
此示例演示如何使用 Durable Functions 协调使用 Azure 认知服务和 Azure OpenAI 处理和汇总 PDF 的步骤。 |
持久任务 SDK 与持久任务计划程序(预览版)
Durable Task SDK 是必须与 Durable Task Scheduler 一起使用的客户端 SDK。 这些 Durable Task SDKs 将您编写的编排连接到 Azure 中的 Durable Task Scheduler 编排引擎。 使用持久任务 SDK 的应用可以在任何计算平台上运行,包括:
- Azure Kubernetes 服务
- Azure 容器应用 (Azure Container Apps)
- Azure 应用服务
- 本地虚拟机(VM)
持久任务计划程序(目前为预览版)充当业务流程引擎和存储后端的作用,用于业务流程状态持久性。 持久任务计划程序:
- 完全由 Azure 管理,从而消除管理开销
- 提供高业务流程吞吐量
- 提供现成仪表板,用于业务流程监视和调试
- 包括本地模拟器
何时使用Durable Task SDK
如果不想使用 Azure Functions 编程模型,Durable Task SDK 提供了一种轻量且相对不具限制性的编程模型,用于编写工作流。
如果需要使用官方Microsoft支持在本地 Azure Kubernetes 服务或 VM 上运行应用,应考虑使用 Durable Task SDK。 虽然 Durable Functions 也可以在这些平台上运行,但没有官方支持。
试试看
使用以下任一快速入门来配置您的应用程序,以便将 Durable Task Scheduler 与 Durable Task SDKs 搭配使用。
快速入门 | DESCRIPTION | |
---|---|---|
本地开发快速入门 | 使用 .NET、Python 或 Java SDK 创建具有 Durable Task SDK 和 Durable Task Scheduler 的应用。 | 使用 Durable Task Scheduler 模拟器在本地运行扇入/扇出编排,并使用仪表板查看编排历史记录。 |
注释
Durable Task Framework (DTFx) 是一个开源 .NET 业务流程框架,类似于 .NET Durable Task SDK。 虽然它 可用于 生成在 Azure Kubernetes 服务等平台上运行的应用,但 DTFx 不会获得官方Microsoft支持。