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

为 Azure Functions 持久任务调度器 设置自动清除保留策略(预览版)

为了防止达到 容量单位(CU)的内存限制,最佳做法是定期清除业务流程历史记录数据。 Durable Task Scheduler 提供一种轻量且可配置的自动清理功能,帮助您管理编排数据清理,无需手动干预。

自动清理在后台异步运行,经过优化以最大程度地减少系统资源使用,并防止与其他持久任务产生干扰。 尽管自动清理功能不严格遵循固定时间表,但其清理速度通常与您的编排调度速度保持一致。

工作原理

自动清除是一项选择加入功能。 可以通过定义保留策略来启用此功能,这些策略用于控制处于特定状态的业务流程数据的保留时间。 自动清除功能会清除与终端状态关联的业务流程数据。 “终端”是指已达到最终状态且没有进一步计划、事件处理或工作项生成的业务流程。 终端状态包括:

  • Completed
  • Failed
  • Canceled
  • Terminated

符合自动清除条件的业务流程实例与 Durable SDK PurgeInstancesAsync API 所面向的业务流程实例匹配。

自动清理将忽略与非最终状态关联的协调数据。 “非终端”状态表示业务流程实例正在主动执行、暂停或处于将来可能恢复的状态(等待外部事件或计时器)。 这些业务流程继续作为新业务流程,其中当前执行已完成,但新实例已作为延续启动。

这些状态包括:

  • Pending
  • Running
  • Suspended
  • Continued_As_New

启用后, 自动清理功能会定期删除早于您设置的保留期限的编排数据。 仅自动清除

注释

定义的保留策略将应用于计划程序 中的所有 任务中心。

策略值

保留值的范围可以是 0(尽快清除)到最大整数值,单位为

保留期是指业务流程进入终端状态后的时间段。 例如,设置保留期值 1 天。 如果业务流程需要 10 天才能完成,那么自动清理将在结束的下一天才会将其删除。 在业务流程完成之前,不会触发自动清除。

尽管保留期没有最大限制,但建议避免长时间保留大量过时业务流程数据。 这种做法可确保有效使用存储资源并保持最佳的应用性能。

策略类型

配置自动清除保留策略时,可以设置 特定 策略或 默认 策略。

  • 无论 如何,默认策略orchestrationState都会清除业务流程数据。 以下策略在两天后清除此功能覆盖的所有状态的编排数据:

    {
      "retentionPeriodInDays": 2
    }
    
  • 特定策略定义对特定 orchestrationState 的业务流程数据清除。 以下策略告知 Durable Task Scheduler 将 已完成 的业务流程数据保留 1 天,之后将清除此数据。

    {
      "retentionPeriodInDays": 1,
      "orchestrationState": "Completed"
    }
    

添加特定策略以替代应用于业务流程的默认策略。 在以下示例中,第二个和第三个策略将替代默认策略("retentionPeriodInDays": 1)。

  • completed 业务流程关联的数据会尽快删除。

  • failed 编排关联的数据将在 60 天后删除。

    [
      {
        "retentionPeriodInDays": 1
      },
      {
        "retentionPeriodInDays": 0,
        "orchestrationState": "Completed"
      },
      {
        "retentionPeriodInDays": 60,
        "orchestrationState": "Failed"
      }
    ]
    

由于没有为 canceledterminated 业务流程设置任何特定策略,因此默认策略仍适用于它们,在 1 天后清除其数据。

有关详细信息,请参阅持久任务计划程序保留策略的 API 参考规范。

启用自动清除

可以使用以下方法定义保留策略:

  • 持久任务 CLI
  • Azure 资源管理器 (ARM)
  • 二头肌

请确保具有最新版本的 Durable Task CLI 扩展。

az extension add --name durabletask
az extension update --name durabletask

运行以下命令创建或更新保留策略。

az durabletask retention-policy create --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP --default-days 1 --completed-days 0 --failed-days 60

以下属性指定不同状态的编排数据的保留期限。

资产 DESCRIPTION
--canceled-days-x 保留已取消业务流程的天数。
--completed-days-c 保留已完成业务流程的天数。
--default-days-d 保留业务流程的天数。
--failed-days-f 保留失败业务流程的天数。
--terminated-days-t 保留已终止业务流程的天数。

示例响应

如果创建成功,将收到以下响应。

{
  "id": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAMER/retentionPolicies/default",
  "name": "default",
  "properties": {
    "provisioningState": "Succeeded",
    "retentionPolicies": [
      {
        "retentionPeriodInDays": 1
      },
      {
        "orchestrationState": "Completed",
        "retentionPeriodInDays": 0
      },
      {
        "orchestrationState": "Failed",
        "retentionPeriodInDays": 60
      }
    ]
  },
  "resourceGroup": "RESOURCE_GROUP",
  "systemData": {
    "createdAt": "2025-04-23T23:41:17.3165122Z",
    "createdBy": "someone@microsoft.com",
    "createdByType": "User",
    "lastModifiedAt": "2025-04-23T23:41:17.3165122Z",
    "lastModifiedBy": "someone@microsoft.com",
    "lastModifiedByType": "User"
  },
  "type": "microsoft.durabletask/schedulers/retentionpolicies"
}

小窍门

通过 CLI 参考详细了解保留策略命令。

禁用自动清除

使用以下命令删除保留策略。 持久任务计划程序在 5 到 10 分钟内停止清理业务流程数据。

az durabletask retention-policy delete --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP

后续步骤

使用 Durable Task Scheduler 仪表板监视和管理业务流程状态和历史记录。