概念介绍
任何语言,任何框架,任何地方
云平台和边缘计算的微服务构建块
Sidecar 架构
托管环境
自托管
Kubernetes 托管
开发者语言 SDK 和框架
Dapr SDKs
开发框架
Web
集成和扩展
为运维而设计
概念介绍
Dapr(Distributed Application Runtime ,分布式应用运行时)是微软新推出的,一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。
任何语言,任何框架,任何地方

Dapr 整理了构建微服务应用为开放,独立的构建块的最佳实践,使用户能够使用自己选择的语言和框架来构建可移植的应用程序。每个构建块都是独立的,用户可以在应用中使用其中的一个或多个。
云平台和边缘计算的微服务构建块
在构建微服务应用时,需要考虑很多。Dapr 在构建微服务应用时为常见功能提供了最佳实践,开发人员可以使用标准方式然后部署到任何环境。Dapr 通过提供分布式构建块来实现此目标。
每个构建块都是独立的,这意味着您可以采用其中一个或多个或全部来构建应用。在当前 Dapr 的初始版本中,提供了以下构建块:
| 构建块 | 描述 |
|---|---|
| 服务间调用 | 弹性的服务间调用能在远程服务上进行方法调用(包括检索),无论它们是否位于受支持的托管环境中的。 |
| 状态管理 | 对于存储键/值对的状态管理,长时间运行,高可用性,有状态服务可轻松写入应用程序中的无状态服务。状态存储是可插拔的,可以包括 Azure CosmosDB, Azure SQL Server, PostgreSQL, AWS DynamoDB 或 Redis 等。 |
| 发布订阅 | 发布活动并订阅主题 |
| 资源绑定 | 带触发器的资源绑定通过接收和发送事件到任何外部源(如数据库、队列、文件系统等)来进一步构建事件驱动架构,以实现扩展性和弹性。 |
| Actors | 一种用于有状态和无状态对象的模式,通过方法和状态的封装让并发变得简单。Dapr 在其 actor 运行时提供了很多能力,包括并发,状态管理,用于 actor 激活/停用的生命周期管理,以及唤醒 actor 的计时器和提醒器。 |
| 可观测性 | Dapr 可以发出度量,日志和跟踪以调试和监控 Dapr 和用户应用程序。Dapr 支持分布式跟踪,通过使用 W3C 跟踪上下文标准和 Open Telemetry 发送到不同的监控工具,以方便诊断和服务于生产中的服务间调用。 |
| 秘密 | Dapr提供秘密管理,并与公有云和本地秘密存储集成,以检索秘密,用于应用代码。 |
Sidecar 架构
Dapr以 sidecar 架构的方式公开其API,可以是容器,也可以是进程,不需要应用代码包含任何 Dapr 运行时代码。这使得 Dapr 与其他运行时的集成变得容易,同时也提供了应用逻辑的分离,改善可支持性。 
托管环境
Dapr 可以托管在多种环境中,包括用于本地开发的自托管,或部署到一组 VM、Kubernetes 和边缘环境(如 Azure IoT Edge)。
自托管
在自托管模式下,Dapr 作为单独的 sidecar 进程运行,服务代码可以通过 HTTP 或 gRPC 调用该进程。在自托管模式下,您还可以将 Dapr 部署到一组 VM 上。

Kubernetes 托管
在容器托管环境(如 Kubernetes)中,Dapr 作为 sidecar 容器运行,和应用程序容器在同一个 pod 中。
在 Kubernetes 中, dapr-sidecar-injector 和 dapr-operator 服务提供一流的集成,以将 Dapr 作为 sidecar 容器启动在与服务容器相同的 pod 中 ,并为在集群中部署的 Dapr 组件提供更新通知。 
开发者语言 SDK 和框架
Dapr 提供各种 SDK 和框架,便于开始以您喜欢的语言与 Dapr 一起开发。
Dapr SDKs
为了让不同语言使用 Dapr 更加自然,它还包含了 语言特定的 SDK:
C++
Go
Java
JavaScript
Python
Rust
.NET
PHP
这些 SDK 通过特定语言 API 来暴露 Dapr 构建块的功能,而不是调用 http/gRPC API。这使您能够以自己选择的语言编写无状态和有状态功能和 actors 的组合。由于这些 SDK 共享 Dapr 运行时,因此您可以获得跨语言 actor 和功能支持。
开发框架
Dapr 可以与任何开发框架集成。下面是一些已经和 Dapr 集成的。
Web
| 语言 | 框架 | 描述 |
|---|---|---|
| .NET | ASP.NET | 带来状态路由控制器,从而完成来自其他应用的 发布/订阅 构建块。也可以利用 ASP.NET Core gRPC 服务。 |
| Java | Spring Boot | |
| Python | Flask | |
| Javascript | Express | |
| PHP | 您可以使用 Apache, Nginx, 或 Caddyserver 进行托管 |
集成和扩展
访问 integrations 页面,了解 Dapr 对各种框架和外部产品的一流支持,包括:
Azure Functions runtime
Azure Logic Apps runtime
Azure API 管理
KEDA
Visual Studio Code
为运维而设计
Dapr 专为 运维 和安全性而设计。Dapr sidecar、运行时间、组件和配置都可以轻松、安全地管理和部署,以满足组织的需求。
通过 Dapr CLI 安装的 服务仪表板提供了基于 Web 的 UI ,使您能够查看信息,查看日志以及 Dapr sidecar 的更多内容。
对于监控工具的支持使您可以更深入地了解到 Dapr 自身的系统服务和 side-cars 中的服务,而 Dapr 构建了对于应用程序的可观察性能力,例如链路跟踪和 metrics。
参考地址:https://docs.dapr.io/zh-hans




