【QCon】精华内容上线85%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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

  • 2019-11-19
  • 本文字数:1221 字

    阅读完需:约 4 分钟

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


2019-11-19 09:272321

评论 1 条评论

发布
用户头像
这玩意儿完全把service mesh做成了actor模型...会玩,将Service mesh,Actor,Grpc,EDA合并了...脑洞大开
2019-11-21 12:06
回复
没有更多了
发现更多内容

芯片破壁者(十二.上):“大头儿子”模式下的韩国半导体

脑极体

架构师训练营 Week 10 总结

Wancho

【架构师训练营】第十期作业

云064

Week10总结

leis

极客大学架构师训练营 0 期 week 10 学习笔记

chun1123

学习 DDD

极客大学架构师训练营 0 期 week 10 作业

chun1123

dubbo DDD

Week10-Homework

微服务&DDD&中台

dony.zhang

中台 微服务 DDD

Dubbo微服务调用时序图及微服务架构个人见解

潜默闻雨

Week 10 命题作业

Jeremy

Week10

第十周课程总结

考尔菲德

微服务&DDD

极客大学架构师训练营

架构师训练营 Week 10 作业

Wancho

微服务架构的思考

极客李

第10周 微服务&DDD 命题作业

Jaye

架构师训练营第10周作业

Bruce Xiong

Week 10 作业

鱼_XueTr

记一次生产环境tomcat线程数打满情况分析

Java技术宝典

Java 并发

微服务架构一点思考和认识

leis

Week 10 学习总结

Jeremy

一次AI使能体系与产业应用的会师:HAI 2020上的华为故事新解

脑极体

【架构师训练营 - week10 -1】作业

早睡早起

架构师训练营第 0 期第 10 周作业

无名氏

微服务 领域驱动设计

架构师训练营第十周作业

子豪sirius

week10

burner

来自面试官的技术面试题

xcbeyond

Java 数据库 面试 自我介绍

面试官:您能说说序列化和反序列化吗?是怎么实现的?什么场景下需要它?

xcbeyond

Java 面试 序列化

架构师培训 -10 微服务、秒杀

刘敏

第十周作业

考尔菲德

架构师训练营 - 第十周 - 总结

Anrika

极客大学架构师训练营

Dapr旨在简化弹性和可移植微服务的创建_架构_Sergio De Simone_InfoQ精选文章