由 Dapr 提供支持的微服务 API
Azure 容器应用提供由分散式应用程序运行时 (Dapr) 提供支持的 API,可帮助你编写和实现简单、可移植、可复原且安全的微服务。 Dapr 作为抽象层与 Azure 容器应用协同工作,提供低维护和可缩放的平台。 Azure 容器应用提供一系列完全托管的 Dapr API、组件和功能,专门针对微服务方案。 只需在你的容器应用环境中照常启用和配置 Dapr。
微服务 API 如何与容器应用配合工作
使用 启用了 Dapr 的容器应用、为解决方案配置的 Dapr 组件和调用它们之间通信的 Dapr sidecar 为容器应用环境配置微服务 API。 下图使用 pub/sub API 作为示例阐释了这些核心概念。
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 常见问题解答。
API | 状态 | 说明 |
---|---|---|
服务到服务调用 | GA | 发现服务并执行可靠、直接的服务到服务调用(带有自动 mTLS 身份验证和加密)。 请参阅 Azure 容器应用中 Dapr 服务调用的已知限制。 |
状态管理 | GA | 为事务和 CRUD 操作提供状态管理功能。 |
发布/订阅 | GA | 允许发布方和订阅方容器应用通过中间消息代理相互通信。 还可以使用外部组件 JSON 文件创建针对某个主题的声明性订阅。 详细了解声明性发布/订阅 API。 |
绑定 | GA | 基于事件触发应用程序 |
执行组件 | GA | Dapr 执行组件是消息驱动的单线程工作单元,旨在快速缩放。 例如,在突发密集型工作负载情况下。 |
可观察性 | GA | 将跟踪信息发送到 Application Insights 后端。 |
机密 | GA | 从应用程序代码访问机密或引用 Dapr 组件中的安全值。 |
配置 | GA | 为支持的配置存储检索并订阅应用程序配置项目。 |
兼容的 SDK
Dapr 的最新客户端 SDK 包与 Azure 容器应用兼容。 可以将任何受支持的 GA Dapr API 与以下 Dapr 客户端 SDK 版本配合使用:
语言 | SDK 版本 |
---|---|
Java | 1.12.0 |
Go | 1.11.0 |
Python | 1.14.0 |
.NET | 1.14.0 |
JavaScript | 3.3.1 |
Rust | 0.15.1 |
注意
目前,Dapr 服务器扩展、执行组件和工作流 SDK 包与 Azure 容器应用不兼容。 详细了解所有 Dapr SDK 包。
第 1 层与第 2 层组件
支持部分 Dapr 组件。 在该子集中,Dapr 组件分为两个支持类别:第 1 层或第 2 层。
- 第 1 层组件: 稳定组件,这些组件在关键(安全或严重回归)方案中立即接受调查。 否则,Azure 会与开放源代码协作,以在修补程序或下一个常规版本中进行寻址。
- 第 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。