由 Dapr 提供支持的微服务 API
Azure 容器应用提供由分散式应用程序运行时 (Dapr) 提供支持的 API,可帮助你编写和实现简单、可移植、可复原且安全的微服务。 Dapr 作为抽象层与 Azure 容器应用协同工作,提供低维护和可缩放的平台。 Azure 容器应用提供一系列完全托管的 Dapr API、组件和功能,专门针对微服务方案。 只需在你的容器应用环境中照常启用和配置 Dapr。
使用 启用了 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 的容器应用会在运行时加载给定组件。 |
Azure 容器应用提供托管的正式版 Dapr API(构建基块、API 和操作 API)。 这些 API 是完全托管的,支持在生产环境中使用。
若要详细了解如何使用 alpha Dapr API 和功能,请参阅 Dapr 常见问题解答。
构建基块 API | 状态 | 说明 |
---|---|---|
服务到服务调用 | GA | 发现服务并执行可靠、直接的服务到服务调用(带有自动 mTLS 身份验证和加密)。 请参阅 Azure 容器应用中 Dapr 服务调用的已知限制。 |
状态管理 | GA | 为事务和 CRUD 操作提供状态管理功能。 |
发布/订阅 | GA | 允许发布方和订阅方容器应用通过中间消息代理相互通信。 还可以使用外部组件 JSON 文件创建针对某个主题的声明性订阅。 详细了解声明性发布/订阅 API。 |
绑定 | GA | 基于事件触发应用程序 |
执行组件 | GA | Dapr 执行组件是消息驱动的单线程工作单元,旨在快速缩放。 例如,在突发密集型工作负载情况下。 |
机密 | GA | 从应用程序代码访问机密或引用 Dapr 组件中的安全值。 |
配置 | GA | 为支持的配置存储检索并订阅应用程序配置项目。 |
操作 API | 状态 | 说明 |
---|---|---|
健康产业 | GA | 运行状况检查探测,用于监视 Dapr 的就绪情况或运行情况和 SDK 的初始化就绪情况。 运行状况 API 仅适用于 HTTP。 |
Metadata | GA | 返回有关 sidecar 的信息,允许运行时可发现性。 |
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 包。
支持部分 Dapr 组件。 在该子集中,Dapr 组件分为两个支持类别:第 1 层或第 2 层。
- 第 1 层组件: 稳定组件,这些组件在关键(安全或严重回归)方案中立即接受调查。 否则,Azure 会与开放源代码协作,以在修补程序或下一个常规版本中进行寻址。
- 第 2 层组件: 优先级较低的组件,因为它们不处于稳定状态或由第三方提供商进行调查。
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 |
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。
- 使用下列部署 Dapr:
- 在现有容器应用中启用 Dapr。