Dapr旨在简化弹性和可移植微服务的创建

Microsoft Dapr是一个开源的、事件驱动的框架,旨在为云计算和边缘应用程序构建弹性和可移植的微服务。微软表示,Dapr封装了构建微服务的最佳实践,并使开发人员可以专注于他们的应用程序的业务逻辑。

Dapr提供了一个事件驱动的运行时,它支持构建微服务所需的基本功能,比如服务调用、状态管理和发布/订阅消息传递。此外,它还引入了许多更高级的特性。

Virtual actors旨在通过将状态和行为封装在可以激活和停用的对象中来简化异步计算的管理,并支持使用计时器来触发代码执行。actor 也可以是无状态的。Dapr中的actor是虚拟的,这意味着它们在内存中的表示与actor身份和生命周期无关。特别是,可以在一段时间内不使用actor时自动回收它,并在首次请求它时创建。actor 还可以迁移到不同的节点,例如,当正在运行它们的节点发生故障时。为了简化并发处理,actor是单线程的,并且受制于基于回合的访问策略。此外,Dapr运行时将使用超时来检测和解决可能的死锁。

Dapr还提供了一个高级的事件驱动模型,这个模型可以将数据库、队列和webhook等外部服务注册为触发代码执行的事件源,或者注册为事件消费者。这是通过绑定实现的,绑定简化了与那些服务的交互,处理重试和失败,并支持将应用程序从一个服务移植到另一个服务,而无需更改代码。在撰写本文时,当前的绑定还处于试验阶段

最后,Dapr还支持跨服务(内部或外部)的分布式跟踪。跟踪不需要插装应用程序代码,因为Dapr使用HTTP/gRPC中间件来拦截所有Dapr和应用程序流量,并自动注入相关ID以跟踪分布式事务。Dapr与OpenTelemetry兼容,后者支持使用许多后端,包括Azure Monitor、Datadog、Instana、Jaeger、SignalFX、Stackdriver、Zipkin以及其他等等。

Dapr架构遵循边车模式,这意味着它的组件既可以作为独立的进程部署,也可以作为提供隔离和封装的容器部署,而且不需要在应用程序代码中包含运行时。这使得将Dapr与其他运行时集成然后在Kubernetes环境中使用它变得很容易。

Dapr针对许多语言提供了SDK,包括 GoJava、 JavaScript、 Python,当然还有.NET。特定于语言的SDK以符合语言习惯的方式暴露Dapr API,并隐藏使用其HTTP/gRPC API的复杂性。

你可以使用主要操作系统可用的安装脚本来安装Dapr。在Linux下,你可以运行以下命令:

$ wget -q https://raw.githubusercontent.com/dapr/cli/master/install/install.sh -O - | /bin/bash

$ dapr init

然后你可以通过执行Dapr run在本地运行Dapr,或者配置Kubernetes集群来利用它的自动伸缩能力。如果你打算在Kubernetes中使用Dapr,确保你也可以检出最近针对Kubernetes发布的微软开放应用程序模型Open Application Model ,简称OAM)及其最初的实现Rudr。OAM和Rudr旨在帮助开发人员明确地定义他们的应用程序,使其与实现区分开来,并保持开发和部署之间的关注点分离。

原文链接:

Dapr Aims to Simplify the Creation of Resilient and Portable Microservices

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章