【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

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:272337

评论 1 条评论

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

Java之面向对象3(终结篇)

喜羊羊

java; 9月月更

【云原生】Nacos中的事件发布与订阅--观察者模式

石臻臻的杂货铺

云原生 nacos 9月月更

安全工作杂想 - 2022.9.12

心在飞

【SSM】Mybatis系列——解决属性名和字段名不一致的问题、日志

胖虎不秃头

mybatis SSM框架 9月月更

图灵访谈 | 一位半路出家的程序员的“天命”之选

图灵社区

Java 人工智能 大数据 编程语言 可视化

构建自动化运维体系的三大层级

穿过生命散发芬芳

自动化运维 9月月更

【SSM】Mybatis系列——配置解析

胖虎不秃头

mybatis ssm 9月月更

面试突击82:SpringBoot 中如何操作事务?

王磊

Java 面试题

关于Linux网络与网络编程

Joseph295

java之面向对象2

喜羊羊

java; 9月月更

四个小时的轮番轰炸,三面蚂蚁金服,拿到offer的那天我的眼泪止不住的流了下来!

钟奕礼

Java 程序员 架构 后端 java面试

C++学习---变长参数(stdarg.h)的实现原理

桑榆

c++ 源码阅读 9月月更

常见的主要监控数据获取方式

阿泽🧸

监控 9月月更

滴滴前端面试题合集

coder2028

JavaScript 前端

质量问题不是不爆,时候未到

Java 架构 职场

java之面向对象1

喜羊羊

java; 9月月更

万字长文带你吃透SpringCloudGateway工作原理+动态路由+源码解析

Java快了!

关于SpringCloudAlibaba,看阿里这篇笔记真香

程序知音

Java 微服务 阿里 SpringCloud 后端技术

【SSM】Mybatis系列——mybatis的简介、环境搭建、CRUD操作

胖虎不秃头

mybatis SSM框架 9月月更

2022-09-12:以下go语言代码输出什么?A:true;B:false;C:无法编译;D:运行时 panic。 package main func main() { var x chan<-

福大大架构师每日一题

golang 福大大 选择题

到底什么才是完美的回答:什么是事务?

Joseph295

Java基础(一)| Java概述与基础语法案例

timerring

Java core 9月月更

美团前端面试题(附答案)

hellocoder2029

JavaScript 前端

应届的我,面试37次,16个offer上岸后总结了一些面试心得

收到请回复

Java 项目管理 面试 语言 & 开发 秋招

下载量已过亿次!阿里内部不外传秘籍50万字Java面试手册首次开放

钟奕礼

Java 程序员 架构 后端 java面试

MySQL必知必会-检索数据

阿柠xn

MySQL sql 数据检索 9月月更

一文带你深入掌握ES6 Proxy数据代理

海底烧烤店ai

JavaScript node.js 全栈开发 9月月更

图灵访谈 | 一位半路出家的程序员的“天命”之选

图灵教育

Java 人工智能 大数据 编程语言 可视化

网络协议中链接与断开的握手有何区别?

想要飞的猪

三次握手 网络协议、 TCP四次挥手

GitHub上标星90k+的《Java知识总结+面试指南》到底有什么魅力?

钟奕礼

Java 程序员 架构 后端 java面试

Java 并发:这是你需要的最后一篇文章

Joseph295

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