快速入门:设置 Durable Functions 应用以使用 Netherite 存储提供程序
使用 Durable Functions(Azure Functions 的一项功能)在无服务器环境中编写有状态函数。 Durable Functions 管理应用程序中的状态、检查点和重启。
Durable Functions 提供多个存储提供程序(也称为“后端”),用于存储业务流程和实体运行时状态。 默认情况下,新项目配置为使用 Azure 存储提供程序。 在本快速入门中,你需将 Durable Functions 应用配置为使用 Netherite 存储提供程序。
备注
以下步骤假定你从现有的 Durable Functions 应用开始,并且熟悉如何操作它。
具体而言,本快速入门假定你已经:
- 在本地计算机上创建了 Azure Functions 项目。
- 使用业务流程协调程序函数和触发它的客户端函数向项目添加了 Durable Functions。
- 配置项目进行本地调试。
- 了解了如何将 Azure Functions 项目部署到 Azure。
如果不满足这些先决条件,建议从以下快速入门之一开始:
- 创建 Durable Functions 应用 - C#
- 创建 Durable Functions 应用 - JavaScript
- 创建 Durable Functions 应用 - Python
- 创建 Durable Functions 应用 - PowerShell
- 创建 Durable Functions 应用 - Java
备注
如果你的应用使用扩展捆绑包,请跳过本部分。 扩展捆绑包无需手动进行扩展管理。
首先,从 NuGet 安装最新版本的 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.Netherite 存储提供程序扩展。 对于 .NET,通常会在 .csproj 文件中包含对它的引用并生成项目。
可以使用以下 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。
Netherite 后端需要 Azure 事件中心的连接字符串才能在 Azure 上运行。 但对于本地开发,提供字符串 "SingleHost"
可以避开使用事件中心。
在 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 文件的存储提供程序部分,将 type
设置为 Netherite
:
{
"version": "2.0",
"extensions": {
"durableTask": {
"storageProvider": {
"type": "Netherite"
}
}
}
}
此代码片段是基本配置。 稍后你可能需要添加参数。
你的应用现已准备好进行本地开发。 可以启动函数应用来测试它。 启动该应用的一种方法是在你的应用程序的根目录中运行 func host start
,然后执行基本的业务流程协调程序函数。
函数应用运行时,Netherite 会将有关其活动分区的加载信息发布到名为 DurableTaskPartitions 的 Azure 存储表。 可以使用 Azure 存储资源管理器来验证它是否按预期工作。 如果 Netherite 运行正确,则表不为空。 请参阅以下示例屏幕截图。
有关 DurableTaskPartitions 表的内容的详细信息,请参阅分区表。
备注
如果你在 Windows OS 上使用本地存储仿真,请确保你使用的是 Azurite 存储仿真器,而不是较早的 Azure 存储仿真器组件。 仅支持通过 Azurite 使用 Netherite 的本地存储仿真。
若要在 Azure 中运行应用,请创建 Azure Functions 应用。
你需要设置事件中心命名空间才能在 Azure 中运行 Netherite。 如果希望在本地开发期间使用事件中心,也可以对其进行设置。
备注
事件中心命名空间会产生持续成本,无论它是否在由 Durable Functions 使用。 如果你是首次探索 Azure,那么 Microsoft 会提供 12 个月的 Azure 订阅帐户。
完成在 Azure 门户中创建事件中心命名空间的步骤。 创建命名空间时,系统可能会提示你:
- 选择资源组。 使用函数应用使用的同一资源组。
- 选择一个“计划”并预配“吞吐量单位”。 选择默认值。 稍后可以更改此设置。
- 选择一个“保留”时间。 选择默认值。 此设置对 Netherite 不产生效果。
若要获取事件中心命名空间的连接字符串,请转到 Azure 门户中的事件中心命名空间。 选择“共享访问策略”,然后选择“RootManagedSharedAccessKey”。 此时会显示一个名为“连接字符串-主键”的字段,该字段的值是连接字符串。
接下来,在函数应用中将连接字符串添加为应用程序设置。 若要在 Azure 门户中添加它,请转到函数应用视图,选择“配置”,然后选择“新建应用程序设置”。 你可以分配 EventHubsConnection
以映射到你的连接字符串。 以下屏幕截图显示了一些示例。
备注
如果应用不属于弹性高级计划,请跳过此部分。
如果应用运行的是弹性高级计划,建议启用运行时缩放监视,以提升缩放功能。 转到“配置”,选择“函数运行时设置”,并将“运行时缩放监视”设为“启用”。
备注
如果你的应用在 Linux 上运行,请跳过此部分。
Netherite 需要 64 位体系结构。 从 Azure Functions V4 开始,64 位应为默认值。 通常可以在 Azure 门户中验证此设置。 在“配置”下,选择“常规设置”,并确保“平台”设置为“64 位”。 如果在门户中看不到此选项,则你可能已在 64 位平台上运行。 例如,Linux 应用不显示此设置,因为它们仅支持 64 位体系结构。
现在可以将代码部署到云,并在其中运行测试或工作负载。 若要验证是否已正确配置 Netherite,可以在门户中查看事件中心的指标,以确保存在活动。
备注
有关如何将项目部署到 Azure 的信息,请查看先决条件中你的编程语言的部署说明。
- 若要详细了解 Netherite 体系结构、配置和工作负载行为(包括性能基准),建议查看 Netherite 文档。