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 运行正常,表格就不会为空。 请参阅以下示例屏幕截图。
有关 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:将事件中心连接字符串添加到应用
在事件中心命名空间中,选择 “共享访问策略>RootManagedSharedAccessKey”。 从 连接字符串-主键复制值。
在函数应用中,选择“ 配置>新应用程序”设置。 将名称设置为
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 计划中,请启用运行时缩放监视,以便更好地进行缩放。 在 “函数运行时设置”下,将 运行时规模监视 设置为 “打开”。
步骤 4:部署应用
将项目部署到函数应用。 您可以使用 Azure Functions Core Tools CLI:
func azure functionapp publish <your-function-app-name>
若要验证在部署后是否正确配置了 Netherite,请查看 Azure 门户中的事件中心指标以确保存在活动。
有关其他部署方法,请参阅 先决条件中语言的部署说明。
相关内容
- Netherite 文档 - 体系结构、配置和性能基准
- 存储提供方概述 - 比较 Netherite、Azure 存储、MSSQL 和 Durable 任务调度器
- Durable Functions 中的性能和扩展
- 通过 Durable Task Scheduler 配置 Durable Functions — 推荐的 Netherite 替代方案