快速入门:将Durable Functions应用配置为使用 Netherite 存储提供程序

Important

对 Netherite 存储后端的支持将于 2028 年 3 月 31 日结束。 评估 Durable Task Scheduler 作为 Netherite 工作负载的替代方案。 请参阅 支持结束公告Durable Task Scheduler 快速入门

Durable Functions 提供多个存储提供程序(也称为“后端”),用于存储业务流程和实体运行时状态。 在本快速入门中,将现有 Durable Functions 应用配置为使用 Netherite 存储提供程序。 Netherite 由 Microsoft Research 设计,适用于 高吞吐量方案,与默认Azure 存储提供程序相比,吞吐量可以增加一个以上的数量级。

注意

  • 不支持跨存储提供程序迁移 任务中心数据 。 切换到 Netherite 后,应用从新的空任务中心开始。

先决条件

本快速入门假定你已有一个具有 orchestrator 函数的现有Durable Functions应用,并为本地调试配置了 client 函数。 如果需要先创建一个,请参阅Durable Functions的相应代码语言快速入门:C# | JavaScript | Python | PowerShell | Java

安装 Netherite 扩展

如果你的应用使用 Extension Bundles(非.NET语言的默认值),请跳过本部分。 扩展捆绑包会自动处理扩展管理。

对于.NET应用,请安装最新版本的 Microsoft.Azure。Functions.Worker.Extensions.DurableTask.Netherite NuGet 包。 可以在 .csproj 文件中添加引用,也可以通过 CLI 安装它。

可以使用以下 Azure Functions Core Tools CLI 命令安装扩展:

func extensions install --package <package name depending on your worker model> --version <latest version>

有关通过 Core Tools CLI 安装 Azure Functions 扩展的详细信息,请参阅 func extensions install

配置 local.settings.json 用于本地开发

在Azure运行时,Netherite 后端需要 Azure 事件中心,但对于本地开发,可以完全绕过事件中心。 EventHubsConnection设置为"SingleHost"在没有事件中心的情况下运行 Netherite 引擎进程内。

local.settings.json 中,将 EventHubsConnection 的值设置为 SingleHost

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "EventHubsConnection": "SingleHost",
    "FUNCTIONS_WORKER_RUNTIME": "<dependent on your programming language>"
  }
}

注意

FUNCTIONS_WORKER_RUNTIME 的值取决于你使用的编程语言。 有关详细信息,请参阅运行时参考

更新 host.json

编辑 host.json 文件的存储提供程序部分,将 type 设置为 Netherite

{
  "version": "2.0",
  "extensions": {
    "durableTask": {
      "storageProvider": {
        "type": "Netherite"
        }
    }
  }
}

此代码片段是基本配置。 稍后可能会添加的常见参数包括 PartitionCount (控制并行度;默认值为 12),以及 EventHubsConnection (如果使用非默认应用设置名称)。 有关完整列表,请参阅 Netherite 配置设置

在本地测试

你的应用现已准备好进行本地开发。 可以启动函数应用来测试它。 启动该应用的一种方法是在你的应用程序的根目录中运行 func host start,然后执行基本的业务流程协调程序函数。

函数应用运行时,Netherite 会将有关其活动分区的加载信息发布到名为 DurableTaskPartitions 的 Azure 存储表。 可以使用 Azure 存储资源管理器来验证它是否按预期工作。 如果 Netherite 运行正常,表格就不会为空。 请参阅以下示例屏幕截图。

Azure 存储资源管理器 中 DurableTaskPartitions 表中数据的截图。

有关 DurableTaskPartitions 表的内容的详细信息,请参阅分区表

注意

如果你在 Windows OS 上使用本地存储仿真,请确保你使用的是 Azurite 存储仿真器,而不是较早的 Azure 存储仿真器组件。 仅支持通过 Azurite 使用 Netherite 的本地存储仿真。

配置并部署到Azure

若要在 Azure 中运行 Netherite,需要Azure Functions应用和事件中心命名空间。 如果还没有函数应用,在Azure门户中创建一个函数应用

步骤 1:创建事件中心命名空间

Netherite 使用 Event Hubs 进行分区管理和工作实例之间的通信。

注意

无论事件中心 (Event Hubs) 是否被 Durable Functions 使用,命名空间都会产生持续费用。 如果你是第一次了解 Azure,Microsoft 会提供一个为期 12 个月的 Azure 订阅帐户

完成在 Azure 门户中创建事件中心命名空间的步骤。 出现提示时:

  • 资源组:使用与函数应用相同的资源组。
  • 计划和吞吐量单位:选择默认值。 稍后可以更改此设置。
  • 保留时间:选择默认值。 此设置对 Netherite 不产生效果。

步骤 2:将事件中心连接字符串添加到应用

  1. 在事件中心命名空间中,选择 “共享访问策略>RootManagedSharedAccessKey”。 从 连接字符串-主键复制值。

    Azure 门户中事件中心命名空间的连接字符串主键的截图。

  2. 在函数应用中,选择“ 配置>新应用程序”设置。 将名称设置为 EventHubsConnection,并将连接字符串粘贴为值。

    函数应用配置窗格的屏幕截图,其中显示了“新建应用程序设置”选项。

    截图中输入 EventHubsConnection 作为名称,并将连接字符串作为其值。

步骤 3:验证平台设置

在 Azure 门户中的 Configuration 下检查以下设置。 并非所有设置都适用于每个应用。

  • 64 位体系结构(仅Windows): Netherite 需要 64 位。 在 “常规设置”下,验证 平台 是否设置为 64 位。 此设置是从 Azure Functions V4 开始的默认设置。 Linux 应用始终为 64 位,不显示此选项。

    ⟨c1⟩⟨c0⟩⟨sb0⟩在 Azure portal 中配置平台以使用 64 位体系结构的截屏图像。⟨/sb0⟩⟨/c0⟩⟨/c1⟩

  • 运行时缩放监视(仅限弹性高级版): 如果应用位于 Elastic Premium 计划中,请启用运行时缩放监视,以便更好地进行缩放。 在 “函数运行时设置”下,将 运行时规模监视 设置为 “打开”。

    启用运行时缩放监视的 Azure 门户截图。

步骤 4:部署应用

将项目部署到函数应用。 您可以使用 Azure Functions Core Tools CLI:

func azure functionapp publish <your-function-app-name>

若要验证在部署后是否正确配置了 Netherite,请查看 Azure 门户中的事件中心指标以确保存在活动。

有关其他部署方法,请参阅 先决条件中语言的部署说明。