Dapr是如何简化微服务的开发和部署
基于微服务设计模式的现代应用程序面临着一系列挑战。微服务需要有一个强大的服务发现机制来实现动态连接。它们需要松散耦合,实现自主性和独立缩放。微服务需要支持多种语言,其中每个服务都是以最合适的语言、框架和运行时实现的。尽管采用容器和编排引擎(如 Kubernetes)可以应对打包、部署和扩展方面的挑战,但开发过程仍然很复杂。微软发布的分布式应用程序运行时 (Dapr) 开发现代应用程序的新方法来应对微服务开发的复杂性,这是微服务和云原生应用程序的一个平台和语言无关的运行时。
Dapr 的体系结构对于开发人员来说非常迷人,尤其是那些熟悉 20 世纪 90 年代 COM 或 EJB 的开发人员。与 COM/DCOM 和 EJB 为在 Windows 和 Java 上运行的分布式应用程序提供管道的方式类似,Dapr 基于容器化、云原生、微服务的应用程序所需的繁重工作。Dapr 有三大元素:运行时、 服务构建块和SDK

Dapr 运行时可以安装在任何可以运行 Docker 的计算机上。核心运行时是容器化的,可以部署在运行 Linux、Windows 或 Mac 操作系统的 x86/ARM 处理器上。它也可以安装在多节点 Kubernetes 群集中,也可以安装在资源受限的边缘设备(如树莓派)上。唯一的要求是主机环境 能够运行 Docker。
Dapr 使得使用在同一主机、内部或外部数据服务以及基于 pub/sub 模式的消息传递服务中运行的其他微服务变得非常简单。由于 Dapr 使用Sidecar 模式,因此可以轻松地集成在 Kubernetes 上运行的微服务,以利用构建基块。Dapr 构建基块充当配置为组件的内部/外部服务提供商和内部使用者之间的中间层。由于每个服务的使用者始终与一个众所周知的终结点通信,Dapr 只需将调用重定向到当前配置的组件。

上图是状态构建基块组件封装构建基块 API 的实现。状态构建基块的实现可能包括 Redis、etcd、MongoDB、Amazon DynamoDB 和 Azure CosmosDB。许多组件是可插拔的,因此一个实现可以很容易地换换到另一个实现。
为了使不同语言使用 Dapr 更自然,它还包括用于 Go、Java、JavaScript、.NET 和 Python 的语言特定 SDK。这些 SDK 通过语言封装的 API 而不是调用标准 http/gRPC API 公开 Dapr 构建基块中的功能,例如保存状态、发布事件或创建Actor。这使开发人员能够用自己选择的语言编写无状态和有状态函数和参与者的组合。
Dapr 将一些经过验证的技术和最佳实践带到微服务开发中。它通过即插即用模型将90 年代的数据驱动的客户端/服务器应用程序的操作,用于 现代云原生应用程序所需的最常见服务。
相关文章:
Dapr是如何简化微服务的开发和部署的更多相关文章
- 从零开始,使用Dapr简化微服务
序言 现有的微服务模式需要再业务代码中集成大量基础设施模块,比如注册中心,服务发现,服务调用链路追踪,请求熔断,重试限流等等,使得系统过于臃肿重量级. Dapr作为新一代微服务模式,使用sidecar ...
- Dapr微服务应用开发系列0:概述
题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- NodeJS 基于 Dapr 构建云原生微服务应用,从 0 到 1 快速上手指南
Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...
- Apollo-open-capacity-platform 微服务能力开发平台 (转)
来自大佬的apollo整合微服务的教程:欢迎大家点评和star,链接如下:https://gitee.com/owenwangwen/open-capacity-platform 官方demo链接:h ...
- 微服务项目开发学成在线_day02 CMS前端开发
1 Vue.js与Webpack研究 开发版的浏览器:https://www.google.cn/intl/zh-CN/chrome/dev/ 前端的开发框架:微服务项目开发学成在线_Vue.js与W ...
- 流量染色与gRPC服务托管 微服务协作开发、灰度发布之流量染色 灰度发布与流量染色
大规模微服务场景下灰度发布与流量染色实践 https://mp.weixin.qq.com/s/UBoRKt3l91ffPagtjExmYw [go-micro]微服务协作开发.灰度发布之流量染色 - ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:1、微服务应用程序常规部署实现多开,节点扩容。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
随机推荐
- pod管理调度约束、与健康状态检查
pod的管理 [root@k8s-master ~]# vim pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod labels: ...
- mysql锁表问题
查看当前所有的进程信息: show full processlist; 查看当前所有的事务 select * from information_schema.innodb_trx; 查看当前出现的锁 ...
- python-列表包字典-根据字典的某一个键的值来进行排序
python-列表包字典-根据字典的某一个键的值来进行排序 列表包字典的数据结构 要实现按照字典中的某一个键所对应的值进行排序 有两种办法 方法一,使用列表的sort方法 由小到大排 列表.sort( ...
- django 组件 自定义过滤器 自定义标签 静态文件配置
组件 将一些功能标签写在一个html文件里,这个文件作为一个组件,如果那个文件需要就直接拿过来使用即可: 这是title.html文件,写了一个导航栏,作为一个公用的组件 <div style= ...
- CentOS 7.4通过rpm包离线安装 Mysql8.0并部署主从复制(附从库备份脚本)
一. 部署MySQL (两个节点都做) 下载 rpm包 wget https://goodrain-pkg.oss-cn-shanghai.aliyuncs.com/mysql8.rpm tar xv ...
- MySQL全面瓦解21(番外):一次深夜优化亿级数据分页的奇妙经历
背景 1月22号晚上10点半,下班后愉快的坐在在回家的地铁上,心里想着周末的生活怎么安排. 突然电话响了起来,一看是我们的一个开发同学,顿时紧张了起来,本周的版本已经发布过了,这时候打电话一般来说是线 ...
- Redis 实战 —— 09. 实现任务队列、消息拉取和文件分发
任务队列 P133 通过将待执行任务的相关信息放入队列里面,并在之后对队列进行处理,可以推迟执行那些耗时对操作,这种将工作交给任务处理器来执行对做法被称为任务队列 (task queue) . P13 ...
- hive搜索报错
在自己搭建的集群上执行hive搜索语句 select count(*) from ods_event_log where dt='2019-12-14' group by dt; 报错如下: Stat ...
- 通过 profiling 定位 golang 性能问题 - 内存篇 原创 张威虎 滴滴技术 2019-08-02
通过 profiling 定位 golang 性能问题 - 内存篇 原创 张威虎 滴滴技术 2019-08-02
- SVN、GIT比较
Git是分布式的,完全可以不备份代码,下载下来后,在本地不必联网就可以看到所有的log,跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交.合并,也可以不用联网在本地提交 SVN ...