暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Dapr概述

码农游乐场 2021-09-08
1367
  • 概念介绍

  • 任何语言,任何框架,任何地方

  • 云平台和边缘计算的微服务构建块

  • 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
语言框架描述
.NETASP.NET带来状态路由控制器,从而完成来自其他应用的 发布/订阅 构建块。也可以利用 ASP.NET Core gRPC 服务。
JavaSpring Boot
PythonFlask
JavascriptExpress
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



文章转载自码农游乐场,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论