Azure Table Storage

关于 Azure Table Storage 状态存储组件的详细信息,该组件可用于连接到 Cosmos DB Table API 和 Azure Tables

组件格式

要设置 Azure Tablestorage 状态存储,请创建一个类型为 state.azure.tablestorage 的组件。请参阅本指南了解如何创建和应用状态存储配置。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
spec:
  type: state.azure.tablestorage
  version: v1
  metadata:
  - name: accountName
    value: <REPLACE-WITH-ACCOUNT-NAME>
  - name: accountKey
    value: <REPLACE-WITH-ACCOUNT-KEY>
  - name: tableName
    value: <REPLACE-WITH-TABLE-NAME>
# - name: cosmosDbMode
#   value: false

规范元数据字段

字段必填详情示例
accountNameY存储账户名称"mystorageaccount"
accountKeyY主密钥或辅助存储密钥"key"
tableNameY用于 Dapr 状态的表的名称。如果表不存在,将自动为你创建"table"
cosmosDbModeN如果启用,则连接到 Cosmos DB Table API 而非 Azure Tables(存储账户)。默认为 false"false"
serviceURLN完整的存储服务终结点 URL。适用于公有云之外的 Azure 环境。"https://mystorageaccount.table.core.windows.net/"
skipCreateTableN跳过对指定存储表的检查(以及在必要时创建该表)。在使用具有最小权限的 Active Directory 身份验证时很有用。默认为 false"true"

Microsoft Entra ID 身份验证

Azure Cosmos DB 状态存储组件支持使用所有 Microsoft Entra ID 机制进行身份验证。有关更多信息以及根据所选的 Microsoft Entra ID 身份验证机制需要提供的相关组件元数据字段,请参阅向 Azure 进行身份验证的文档

你可以在下一节中阅读有关使用 Microsoft Entra ID 身份验证设置 Cosmos DB 的其他信息。

选项 1:设置 Azure Table Storage

按照 Azure 文档中的说明创建 Azure 存储账户。

如果你希望为 Dapr 创建一个表,可以提前创建。不过,除非启用了 skipCreateTable 选项,否则如果表不存在,Table Storage 状态提供程序会自动为你创建一个。

要设置 Azure Table Storage 作为状态存储,你需要以下属性:

  • AccountName:存储账户名称。例如:mystorageaccount
  • AccountKey:主密钥或辅助存储密钥。如果使用 Microsoft Entra ID 身份验证,请跳过此项。
  • TableName:用于 Dapr 状态的表的名称。如果表不存在,将自动为你创建,除非启用了 skipCreateTable 选项。
  • cosmosDbMode:将此项设置为 false 以连接到 Azure Tables。

选项 2:设置 Azure Cosmos DB Table API

按照 Azure 文档中的说明创建一个具有 Table API 的 Cosmos DB 账户。

如果你希望为 Dapr 创建一个表,可以提前创建。不过,除非启用了 skipCreateTable 选项,否则如果表不存在,Table Storage 状态提供程序会自动为你创建一个。

要设置 Azure Cosmos DB Table API 作为状态存储,你需要以下属性:

  • AccountName:Cosmos DB 账户名称。例如:mycosmosaccount
  • AccountKey:Cosmos DB 主密钥。如果使用 Microsoft Entra ID 身份验证,请跳过此项。
  • TableName:用于 Dapr 状态的表的名称。如果表不存在,将自动为你创建,除非启用了 skipCreateTable 选项。
  • cosmosDbMode:将此项设置为 true 以连接到 Azure Tables。

分区

Azure Table Storage 状态存储使用在 Dapr API 请求中提供的 key 属性来确定 row key。服务名称用作 partition key。这提供了最佳性能,因为每种服务类型在自己的表分区中存储状态。

此状态存储在表存储中创建一个名为 Value 的列,并将原始状态放入其中。

例如,以下来自名为 myservice 的服务的操作

curl -X POST http://localhost:3500/v1.0/state \
  -H "Content-Type: application/json"
  -d '[
        {
          "key": "nihilus",
          "value": "darth"
        }
      ]'

将在表中创建以下记录:

PartitionKeyRowKeyValue
myservicenihilusdarth

并发

Azure Table Storage 状态并发是通过根据官方文档使用 ETag 来实现的。

相关链接