概述
Dapr 是一个可移植的、事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的、无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架。
如今,我们正经历着上云浪潮。 开发人员对 Web + 数据库应用结构(例如经典 3 层设计)非常熟悉,并且使用得手,但对本身能支持分布式的微服务应用结构却感觉陌生。 成为分布式系统专家很难,并且你也不需要这么做。 开发人员希望专注于业务逻辑,同时希望平台为其提供可伸缩的、弹性的、可维护性和云原生架构的其他功能。
这就是Dapr所要解决的。 Dapr 将构建微服务应用的 最佳实践 设计成开放、独立和模块化的方式,让你能够选择的任意开发语言和框架构建可移植应用程序。 每个构建块都是完全独立的,您可以采用其中一个或多个或全部来构建你的应用。
此外,Dapr 是和平台无关的,这意味着您可以在本地、Kubernetes 群集或者其它集成 Dapr 的托管环境中运行应用程序。 这使得您能够在云平台和边缘计算中运行微服务应用。
使用 Dapr,您可以使用任何语言、任何框架轻松构建微服务应用,并运行在任何地方。
云平台和边缘计算的微服务构建块
在构建微服务应用时,需要考虑很多。 Dapr 在构建微服务应用时为常见功能提供了最佳实践,开发人员可以使用标准方式然后部署到任何环境。 Dapr 通过提供分布式构建块来实现此目标。
每个构建块都是独立的,这意味着您可以采用其中一个或多个或全部来构建应用。 在当前 Dapr 的初始版本中,提供了以下构建块:
Dapr以 sidecar 架构的方式公开其API,可以是容器,也可以是进程,不需要应用代码包含任何 Dapr 运行时代码。 这使得 Dapr 与其他运行时的集成变得容易,同时也提供了应用逻辑的分离,改善可支持性。
托管环境
Dapr 可以托管在多种环境中,包括用于本地开发的自托管,或部署到一组 VM、Kubernetes 和边缘环境(如 Azure IoT Edge)。
Kubernetes 托管
在容器托管环境(如 Kubernetes)中,Dapr 作为 sidecar 容器运行,和应用程序容器在同一个 pod 中。
为了让不同的语言更加自然地使用 Dapr ,它还包括用于 Go、Java、JavaScript、.NET 和 Python 的语言特定 SDK。 这些 SDK 通过类型化的语言 API 而不是通过调用 http/gRPC API 来使用 Dapr 构建块中的功能,例如,保存状态,发布事件或创建Actor。 这使您能够以自己选择的语言编写无状态和有状态函数和 actors 的组合。 由于这些 SDK 共享 Dapr 运行时,因此您可以获得跨语言 actor 和功能支持。
开发框架
Dapr 可以与任何开发框架集成。 下面是一些已经和 Dapr 集成的。
Web
例如,在 Dapr .NET SDK 中,您可以与 ASP.NET Core集成,它提供了有状态的路由控制器来响应来自其他服务的 pub/sub 事件。
在 Dapr 中,您可以找到 Spring Boot 集成。
Dapr 很容易与Python 和 node Express 集成。 请参阅 中的示例。
在 Dapr PHP-SDK 中,您可以使用 Apache, Nginx 或 Caddyserver。
Actor
Dapr SDK 支持 virtual actors ,这是简化并发、具有方法和状态封装的有状态对象,设计用于可扩展的分布式应用程序。
Azure Functions
Dapr 工作流
要使开发者能够轻松构建使用 Dapr 能力的工作流应用程序,包括诊断和多语言支持,您可以使用 Dapr 工作流。 Dapr 集成了诸如 Logic Apps 之类的工作流引擎。 更多信息请阅读 并访问 Azure Functions 扩展 仓库以试用示例。
为运维设计
Dapr 有为 运维 做专门设计。 通过 Dapr CLI 安装的 提供了基于 Web 的 UI ,使您能够查看信息,查看日志以及 Dapr sidecar 的更多内容。
监控工具支持 提供 Dapr 系统服务和sidecar 的更深入的可见性,Dapr 的 提供了对应用程序的深入了解,例如追踪和度量。
Dapr 可以配置为在开发人员本地计算机上以 自托管模式 运行。 每个运行的服务都有一个 Dapr 运行时进程 (或 sidecar) ,配置为使用状态存储, pub/sub,绑定组件和其他构建块。
您可以使用 在本地机器上运行启用了 Dapr 的应用程序。 请使用 入门示例。
以 Kubernetes 模式运行 dapr
Dapr 可以配置为在任何 Kubernetes 集群 上运行。 在 Kubernetes 中, 和 服务提供一流的集成,以将 Dapr 作为 sidecar 容器启动在与服务容器相同的 pod 中 ,并为在集群中部署的 Dapr 组件提供更新通知。
服务是一个认证中心,它允许 Dapr sidecar 实例之间的相互 TLS 进行安全数据加密。 关于 服务的更多信息请阅读
在 Kubernetes 集群中部署和运行启用 Dapr 的应用程序非常简单,只需向 deployment 方案添加一些注解。 您可以 在这里 看到一些例子,在 Kubernetes 的入门示例中。 使用 来试试吧。
Last modified January 1, 0001