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

Dapr

Distributed Application Runtime (Dapr) 将提供各种 API,可帮助你编写和实现简单、可移植、可复原且受保护的微服务。 Dapr API 将作为一个 sidecar 进程与你的应用程序协同运行,可消除你在构建分散式应用程序时可能遇到的常见复杂性,例如:

  • 服务发现
  • 消息中转站集成
  • 加密
  • 可观察性
  • 机密管理

Dapr 可增量采用。 你可以根据需要使用任何 API 构建基块。

Diagram showing how many different code frameworks can interface with the various building blocks of Dapr via HTTP or gRPC.

功能和特性

Dapr 提供下面一组功能来帮助你在 AKS 上进行微服务开发:

  • 通过群集扩展在 AKS 上轻松预配 Dapr。
  • 通过可以抽象底层技术选项的 HTTP 和 gRPC API 实现可移植性
  • 通过 HTTP 和 gRPC API 进行可靠、安全且可复原的服务到服务调用
  • 通过 CloudEvent 筛选支持和消息传递的至少一次语义轻松发布和订阅消息
  • 通过 Open Telemetry API 收集器实现插接式可观测性和监视
  • 独立于语言运行,同时还提供特定于语言的 SDK
  • 通过 Dapr 扩展与 VS Code 集成
  • 用于解决分布式应用程序挑战的更多 API

常见问题解答

Dapr 和服务网格有何差异?

答:服务网格定义为网络服务网格,而 Dapr 不是服务网格。 虽然 Dapr 和服务网格确实提供一些共有的功能,但服务网格注重于网络问题,而 Dapr 注重于提供构建基块,使开发人员可以更轻松地将应用程序构建为微服务。 Dapr 以开发人员为中心,而服务网格以基础结构为中心。

Dapr 与服务网格共有的一些常见功能包括:

  • 使用 mTLS 加密来保护服务到服务的通信
  • 服务到服务指标收集
  • 服务到服务分布式跟踪
  • 通过重试实现复原

此外,Dapr 还为状态管理、发布/订阅消息传递、执行组件等提供其他应用程序级构建基块。 但是,Dapr 不提供路由或流量拆分等流量行为的功能。 如果你的解决方案可受益于服务网格提供的流量拆分,请考虑使用 Open Service Mesh

有关 Dapr 和服务网格的详细信息以及如何将它们一起使用,请访问 Dapr 文档

Dapr 机密 API 与机密存储 CSI 驱动程序有何差异?

Dapr 机密 API 和托管的机密存储 CSI 驱动程序都允许集成保存在外部存储中的机密,可以从应用程序代码中抽象机密存储技术。 机密存储 CSI 驱动程序将 Azure 密钥保管库中保存的机密装载为 CSI 卷,以供应用程序使用。 Dapr 通过一个可由应用程序代码调用的,并可使用各种机密存储配置的 RESTful API 来公开机密。 下表列出了每种产品/服务的功能:

Dapr 机密 API 机密存储 CSI 驱动程序
支持的机密存储 本地环境变量(用于开发);本地文件(用于开发);Kubernetes 机密;AWS Secrets Manager;Azure 密钥保管库机密存储;在 Kubernetes 上具有托管标识的 Azure 密钥保管库;GCP Secret Manager;HashiCorp Vault Azure 密钥保管库机密存储
在应用程序代码中访问机密 调用 Dapr 机密 API 访问用作 Kubernetes 机密的装载卷或同步装载内容并设置环境变量
机密轮换 新的 API 调用获取更新的机密 按照可配置的间隔轮询机密并更新装载内容
日志记录和指标 Dapr 附属组件生成日志(可以使用 Azure Monitor 等收集器配置日志),通过 Prometheus 发出指标,并公开一个 HTTP 终结点用于运行状况检查 通过 Prometheus 发出驱动程序和 Azure 密钥保管库提供程序指标

有关 Dapr 中的机密管理的详细信息,请参阅机密管理构建基块概述

有关机密存储 CSI 驱动程序和 Azure 密钥保管库提供程序的详细信息,请参阅机密存储 CSI 驱动程序概述

托管的 Dapr 群集扩展与开源 Dapr 产品/服务有何差异?

使用托管的 Dapr 群集扩展是在 AKS 群集上预配 Dapr 的最简单方法。 使用该扩展,可以通过选择启用自动升级来减轻 Dapr 运行时版本的管理负担。 此外,该扩展使用智能默认设置安装 Dapr(例如,在高可用性模式下预配 Dapr 控制平面)。

通过 helm 或 Dapr CLI 安装 Dapr OSS 时,运行时版本和配置选项的设置由开发人员和群集维护人员负责。

最后,Dapr 扩展是 AKS 的扩展,因此其支持策略预期与其他 AKS 功能相同。

详细了解如何从 Dapr OSS 迁移到 AKS 的 Dapr 扩展

如何使用托管标识通过 Microsoft Entra ID 对 Dapr 组件进行身份验证?

如果我已通过某种方法(例如 Helm)安装了 Dapr,如何切换为使用 Dapr 扩展?

建议的指导是从 AKS 群集中完全卸载 Dapr,然后通过群集扩展重新安装。

如果通过 AKS 扩展安装 Dapr,我们建议继续使用该扩展以供将来管理 Dapr,而不是 Dapr CLI。 将这两个工具组合使用会导致冲突,并导致意外的行为。

后续步骤

了解 Dapr 及其能够解决的一些难题后,接下来请尝试使用 Dapr 群集扩展部署应用程序