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

Dapr 与 Azure 容器应用的集成

分散式应用程序运行时 (Dapr) 提供以附属进程形式运行的 API,可帮助你编写和实现简单、可移植、可复原且安全的微服务。 Dapr 作为抽象层与 Azure 容器应用协同工作,提供低维护、无服务器和可缩放的平台。 在容器应用 上启用 Dapr 将和应用程序代码一起创建辅助进程,从而简化通过 HTTP 或 gRPC 与 Dapr 的应用程序通信。

Azure 容器应用中的 Dapr

使用 启用了 Dapr 的容器应用为解决方案配置的 Dapr 组件和调用它们之间通信的 Dapr sidecar 为容器应用环境配置 Dapr。 下图展示了这些与 Azure 容器应用中的 Dapr 相关的核心概念。

显示 Dapr 发布/订阅及其在容器应用中的工作原理的示意图。

Label Dapr 设置 说明
1 启用了 Dapr 的容器应用 通过配置一组 Dapr 参数,在容器应用级别启用 Dapr。 在多个修订模式下运行时,这些值适用于给定容器应用的所有修订版本。
2 Dapr 完全托管的 Dapr API 通过 Dapr sidecar 向每个容器应用公开。 可以通过 HTTP 或 gRPC 从容器应用调用 Dapr API。 Dapr sidecar 在 HTTP 端口 3500 和 gRPC 端口 50001 上运行。
3 Dapr 组件配置 Dapr 使用模块化设计,将功能作为组件交付。 Dapr 组件可由多个容器应用共享。 范围数组中提供的 Dapr 应用标识符决定了哪些启用了 Dapr 的容器应用会在运行时加载给定组件。

支持的 Dapr API、组件和工具

托管 API

Azure 容器应用提供托管的正式版 Dapr API(构建基块)。 这些 API 是完全托管的,支持在生产环境中使用。

若要详细了解如何使用 alpha Dapr API 和功能,请参阅 Dapr 常见问题解答

显示 Dapr API 的示意图。

API 状态 说明
服务到服务调用 GA 发现服务并执行可靠、直接的服务到服务调用(带有自动 mTLS 身份验证和加密)。 请参阅 Azure 容器应用中 Dapr 服务调用的已知限制。
状态管理 GA 为事务和 CRUD 操作提供状态管理功能。
发布/订阅 GA 允许发布方和订阅方容器应用通过中间消息代理相互通信。 还可以使用外部组件 JSON 文件创建针对某个主题的声明性订阅。 详细了解声明性发布/订阅 API。
绑定 GA 基于事件触发应用程序
执行组件 GA Dapr 执行组件是消息驱动的单线程工作单元,旨在快速缩放。 例如,在突发密集型工作负载情况下。
可观察性 GA 将跟踪信息发送到 Application Insights 后端。
机密 GA 从应用程序代码访问机密或引用 Dapr 组件中的安全值。
配置 GA 为支持的配置存储检索并订阅应用程序配置项目。

第 1 层与第 2 层组件

支持 Dapr 组件的子集。 在该子集中,Dapr 组件分为两个支持类别:第 1 层或第 2 层。

  • 第 1 层组件: 稳定组件,这些组件在关键(安全或严重回归)方案中立即接受调查。 否则,Microsoft 会与开放源代码协作,以在修补程序或下一个常规版本中加以解决。
  • 第 2 层组件: 优先级较低的组件,因为它们不处于稳定状态或由第三方提供商进行调查。
第 1 层组件
API 组件 类型
状态管理 Azure blob 存储 v1
Azure 表存储
Microsoft SQL Server
state.azure.blobstorage
state.azure.tablestorage
state.sqlserver
发布和订阅 Azure 服务总线队列
Azure 服务总线主题
Azure 事件中心
pubsub.azure.servicebus.queues
pubsub.azure.servicebus.topics
pubsub.azure.eventhubs
Binding Azure 存储队列
Azure 服务总线队列
Azure Blob 存储
Azure 事件中心
bindings.azure.storagequeues
bindings.azure.servicebusqueues
bindings.azure.blobstorage
bindings.azure.eventhubs
机密管理 Azure Key Vault secrets.azure.keyvault
第 2 层组件
API 组件 类型
状态管理 Azure Cosmos DB
PostgreSQL
MySQL & MariaDB
Redis
state.azure.cosmosdb
state.postgresql
state.mysql
state.redis
发布和订阅 Apache Kafka
Redis Streams
pubsub.kafka
pubsub.redis
Binding Azure 事件网格
Azure Cosmos DB
Apache Kafka
PostgreSQL
Redis
Cron
bindings.azure.eventgrid
bindings.azure.cosmosdb
bindings.kafka
bindings.postgresql
bindings.redis
bindings.cron
配置 PostgreSQL
Redis
configuration.postgresql
configuration.redis

工具

Azure 容器应用确保与 Dapr 开源工具(例如 SDK 和 CLI)兼容。

限制

  • Dapr 配置规范:任何需要使用 Dapr 配置规范的功能。
  • Dapr 启用指南中未列出的任何 Dapr sidecar 注释
  • API 和组件支持:Azure 容器应用中只支持在本文中列为 GA、层级 1 或层级 2 的 Dapr API 和组件。
  • 执行组件提醒:要求 minReplicas 大于 1,以确保提醒始终处于活动状态并会正确触发。
  • 作业:作业不支持 Dapr。

后续步骤