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

使用 Netherite 存储提供程序配置 Durable Functions

Durable Functions 提供多个存储提供程序(也称为“后端”),用于存储业务流程和实体运行时状态。 默认情况下,新项目配置为使用 Azure 存储提供程序。 本文介绍如何配置 Durable Functions 应用以利用 存储提供程序

注意

Netherite 由 Microsoft Research 设计和开发,面向高吞吐量方案。 根据某些基准,与默认的 Azure 存储提供程序相比,其吞吐量提高了一数量级以上。 若要详细了解何时使用 Netherite 存储提供程序,请参阅存储提供程序文档。

有关数据迁移的说明

当前不支持跨存储提供程序迁移任务中心数据。 在切换到 Netherite 后端后,具有现有运行时数据的函数应用将从新的空任务中心开始。 同样,切换到其他存储提供程序时,不能保留使用 Netherite 创建的任务中心内容。

先决条件

以下步骤假定你从现有的 Durable Functions 应用开始,并熟悉如何操作它。

具体而言,本快速入门假定你已经:

  1. 在本地计算机上创建了 Azure Functions 项目。
  2. 使用业务流程协调程序函数和触发它的客户端函数向项目添加了 Durable Functions。
  3. 配置项目进行本地调试。
  4. 了解了如何将 Azure Functions 项目部署到 Azure。

如果未完成这些项,我们建议你从以下文章开始,其中提供了有关如何实现上述所有要求的详细说明:

添加 Netherite 扩展(仅 .NET)

注意

如果应用使用扩展捆绑包,则应忽略此部分,因为扩展捆绑无需手动管理扩展。

需要安装 NuGet 上最新版本的 Netherite 扩展。 这通常意味着在 .csproj 文件中包含对它的引用并生成项目。

要安装的扩展包取决于所使用的 .NET 辅助角色:

可以使用以下 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 用于本地开发

Netherite 后端需要事件中心的连接字符串才能在 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

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

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

上面的代码片段只使用了最低配置。 稍后可能需要考虑其他参数

本地测试

你的应用现在已准备好进行本地开发:可以启动该函数应用来测试它。 执行此操作的一种方法是在应用程序的根目录上运行 func host start 并执行简单的业务流程协调程序函数。

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

Azure 存储资源管理器中“DurableTaskPartitions”表上的数据。

注意

有关此表内容的详细信息,请参阅分区表一文。

在 Azure 上运行应用

需要在 Azure 上创建 Azure Functions 应用。 为此,请按照这些说明的“创建函数应用”部分中的说明进行操作。

设置事件中心

需要设置事件中心命名空间才能在 Azure 上运行 Netherite。 如果希望在本地开发期间使用事件中心,也可以对其进行设置。

注意

事件中心命名空间会产生持续成本,无论 Durable Functions 是否正在使用它。 如果你首次探索 Azure,Microsoft 将提供 12 个月免费 Azure 订阅帐户

创建事件中心命名空间

按照以下步骤在 Azure 门户上创建事件中心命名空间。 创建命名空间时,系统可能会提示:

  1. 选择资源组:使用与函数应用相同的资源组。
  2. 选择计划并预配吞吐量单位。 选择默认值,此设置之后可更改。
  3. 选择保留时间:选择默认值,此设置对 Netherite 没有影响。

获取事件中心连接字符串

若要获取事件中心命名空间的连接字符串,请转到Azure 门户中的事件中心命名空间,选择“共享访问策略”,然后选择“RootManagedSharedAccessKey”。 此时应显示名为“连接字符串-主密钥”的字段,该字段的值是连接字符串。

下面是有关如何在门户中查找此数据的指导的屏幕截图:

在门户中找到“连接字符串-主密钥”

将连接字符串添加为应用程序设置

需要在函数应用中将连接字符串添加为应用程序设置。 若要通过 Azure 门户执行此操作,请转到函数应用视图,选择“配置”,然后选择“新建应用程序设置”。 可在此处分配 EventHubsConnection 以映射到连接字符串。 下面是一些指导性图像。

在函数应用视图中,转到“配置”,然后选择“新建应用程序设置”。输入 EventHubsConnection 作为名称,并输入连接字符串作为它的值。

启用运行时缩放(仅限弹性高级计划)

注意

如果应用不属于弹性高级计划,请跳过此部分。

如果应用运行的是弹性高级计划,建议启用运行时缩放监视,以提升缩放功能。 为此,请转到“配置”,选择“函数运行时设置”,并将“运行时缩放监视”切换为“启用”。

如何在门户中启用“运行时缩放监视”。

确保应用使用的是 64 位体系结构(仅限 Windows)

注意

如果应用在 Linux 上运行,请跳过此部分。

Netherite 需要 64 位体系结构才能工作。 从 Functions V4 开始,此选项应为默认值。 通常可在门户中对此进行验证:在“配置”下,选择“常规设置”,并确保“平台”字段设置为“64 位”。 如果在门户中未看到此选项,则可能已在 64 位平台上运行。 例如,Linux 应用不会显示此设置,因为它们仅支持 64 位。

在门户中将运行时配置为使用 64 位。

部署

现在可以将代码部署到云,并在其中运行测试或工作负载。 若要验证是否已正确配置 Netherite,可以在门户中查看事件中心的指标,以确保存在活动。

注意

有关将项目部署到 Azure 的指南,请查看文章中先决条件部分所选编程语言的部署说明。

若要详细了解 Netherite 体系结构、配置和工作负载行为(包括性能基准),建议查看 Netherite 文档