云原生 | 阿里巴巴的Dapr实践与探索

【Dapr原文/敖小剑,翻译/Edison


本文原文来自Dapr Blog,作者阿里云高级技术专家敖小剑。本文是我根据自己的理解翻译了其中的一部分并加了一些参考文献中的内容,所以并非完整翻译,点击本文底部“阅读原文”即可阅读原版英文全文。

1关于Dapr

Dapr(Distributed Application Runtime)是一个开源、可移植、事件驱动的运行时。它使开发人员能够轻松地构建运行在云平台和边缘的弹性而微服务化的应用程序,无论是无状态还是有状态。Dapr 让开发人员能够专注于编写业务逻辑,而不是解决分布式系统的挑战,从而显著提高生产力并减少开发时间。此外,Dapr 也降低了大部分中小型企业基于微服务架构构建现代云原生应用的准入门槛。

2为什么阿里巴巴选择Dapr?

多语言多环境的需求

众所周知,阿里巴巴在过去的十多年里基于Java技术栈构建了众多的业务系统、中间件和基础设施。

但是,随着阿里巴巴业务的快速发展和云原生技术的逐步应用,包括Node.js、Golang、C、C++ 以及 Rust 等在内的多开发语言并存的需求 就变得需要解决,总不能重复给各个语言造轮子吧?

因此,阿里巴巴急切需要一个能够不受语言技术栈限制的,且能够快速开发微服务的有效解决方案。

多运行时的微服务架构

最终,阿里巴巴选择了基于Sidecar形式运行的多运行时解决方案,这和之前Bilgin Lbryam提出的“多运行时的微服务架构”的理念十分类似。

这种架构的理念其实是将业务逻辑和基础中间件进行分离的实践。

很可能在将来,我们最终将使用多个运行时来实现分布式系统。多个运行时,不是因为有多个微服务,而是因为每个微服务都将由多个运行时组成,最有可能是两个运行时环境:自定义业务逻辑运行环境和分布式原语运行环境。

因此,在这种软件体系结构中,我们可能会将拥有构成应用程序核心的业务逻辑和提供强大的现成分布式原语的sidecar组件。

Dapr是践行多运行时环境理念的第一个开源项目,阿里巴巴也因此从它发布release版本就开始重点关注,因为Dapr具有足够的潜力能够帮助阿里巴巴解决其所遇到的问题和挑战。

换句话说,Sidecar模式所具有的优点能够方便地支持多语言,且基于Dapr可以更加轻便快速地构建应用程序,而不是像以前一样需要引入一大堆客户端SDK。

阿里巴巴资深技术专家 李响(etcd作者)说道“在阿里云,我们相信Dapr将会改变微服务的部署方式。通过引入Dapr,我们的客户可以更加快速和便捷地构建具有可移植性和健壮性的分布式系统”。

3Dapr在阿里巴巴的实践

从2020年中旬开始,阿里巴巴在内部启动了一个小规模的试验,意在使用Dapr来探索和验证Dapr在真实环境下的可行性。与此同时,阿里巴巴也在积极参与Dapr社区的建设,并积极提交了大量的改进建议、反馈 以及 代码。

Serverless场景下多开发语言的支持

阿里巴巴的电商系统包括了大量的支持业务活动和购买流程的需求,这些需求大多都是需要短期内实现,支持稳定交易运行 且 快速响应客户的。因此,FaaS(Function as a Service)这种Serverless的场景是十分适合于这类需求的模式。

首先,FaaS应用具有强烈的支持多语言的需求,特别是不能受限于阿里巴巴已经成熟的Java技术栈生态,因为阿里巴巴的大部分Java应用都对多语言需求的支持不足,特别是像Dart或Rust为代表的不同类型的开发语言。

其次,FaaS应用还需要和本地部署的服务、不同类型的中间件 和 基础设施 进行通信,因此,多语言支持就变得十分的重要。

基于Dapr,阿里巴巴解决了FaaS应用存在的多语言支持不足的问题,帮助客户提高了FaaS应用的开发效率。

生态系统多语言开发的应用系统的集成

在过去的多年中,阿里巴巴通过收购入股了大量不同行业的企业,这些企业都在使用不同的技术栈构建解决方案。

这些被收购入股的公司已经有了大量的应用系统,而且大部分都不是使用Java技术栈开发的。所以,这些应用系统具有强烈的多语言集成需求,以便能够快速地融入阿里巴巴的生态系统之中。例如,部分企业使用了Node.js 和 Golang开发了部分应用,又使用Dart 和 C++ 开发了其他部分应用,在技术的选型上也是根据场景择优选择的,你不能说他们就有错。

但是,现状是阿里巴巴的生态系统不能良好的支持除Java之外的开发语言进行集成,特别是其中一些中间件和基础设施。在实际中,阿里巴巴基于不重复造轮子和成本和时间考虑,也不会为所有的开发语言都重复开发类似的客户端接入。

最后,阿里巴巴选择基于Dapr来为这些应用提供多语言的集成解决方案。

已有的复杂Java遗留系统

在过去的多年中,阿里巴巴基于ClassLoader(Java中的一个核心概念)来设计和开发了大量的复杂的Java系统,这些系统的设计往往是复杂的,而且应用也是很臃肿的。

此外,一些业务开发团队还维护了一些列的多语言中间件SDK来和已有中间件进行联接。但是,这些SDK的维护工作需要和中间件团队的更新保持同步,不能有一点遗漏。这些必要的工作量,也为其带来了潜在的稳定性风险。

因此,阿里巴巴期望基于Dapr来解决上面提到的两个问题。值得一提的是,阿里云为Java的遗留系统设计了一个适配器层,可以方便地将原始的Java调用转换为Dapr客户端API。

下图展示了上述三个场景提到的多语言支持的设计实现:

除此之外,阿里巴巴还在Cloud-to-Cloud的迁移方面进行了实践,这里就不再多赘述。

4未来阿里巴巴的Dapr计划

在未来,阿里巴巴还将继续在试验应用中验证Dapr的可行性,将会主要集中在以下几个方面:

  • 适用场景

  • 性能

  • 稳定性

  • 可移植性

此外,阿里巴巴也正在开发Dapr相关组件来和更多的中间件和基础设施进行集成,其中包括了阿里云的众多内部产品和已发布的商业产品。

通过验证之后,阿里巴巴还将会贡献在阿里云商业产品上实践的集成代码给Dapr社区,也会持续地和Dapr社区一起努力提高Dapr的功能、性能以及稳定性。

Ref学习资料

可以使用文档中的入门指南进行学习,然后通过快速入门来深入了解。如果你需要更多信息,样本库是 Dapr 社区捐赠的不同的应用程序的展示。

Dapr 文档docs.dapr.io是全面的指南,还有几本书,包括《 Learning Dapr》、《使用 Dapr 和 .NET 实践微服务》以及最新发布的免费电子书《Dapr for .NET 开发者》。

原文地址

敖小剑发布于Dapr Blog,https://blog.dapr.io/posts/2021/03/19/how-alibaba-is-using-dapr/ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装grpc占用空间大,grpc linux安装-Go语言中文社区

1. go protobuf 安装Protoc Buffer 安装包下载地址:https://github.com/protocolbuffers/protobuf/releases/download/v3.9.0/protoc-3.9.0-linux-x86_64.zip(使用wget命令下载),最新版本可在此页面查看。下载完成后,解压。将解压出来的inclu…

《Objective-C基础教程》第二章 对C的扩展

.m代表message。编译工作由GCC(GNU Compiler Collection,GNU编译器集合)处理,可以理解C语言的全部3个变体。NS代码前缀表示来自Cocoa,苹果收购的NeXT Software公司开发的NextSTEP工具包。布尔类型BOOL具有YES和NO值,但使用8位存储…

阿里25k招.NET,要求WPF!

说到WPF、上位机,很多.NET开发者可能只是听过并不了解,然而随着工业4.0的火爆大势,当下.NET开发者又多了一个高薪选型,在各大招聘网站上都能找到5年经验25k左右的岗位,近日阿里对.NET的招聘,明确就要求的WP…

我们计划招收300名学员,免费攻读人工智能专业

给大家看一份最新的数据:(薪资表)2018年最新数据:python、大数据、人工智能从业者工资为什么人工智能行业的工资那么高?无论是科研院所,商业巨头还是初创企业,各行各业都在大力开发或者引进人工…

Linux查看设备 eth,lspci grep Eth,查看Linux下的各种硬件设备是否识别或存在之用

背景:Linux下的硬件有很多,如何看网卡是啥样的,声卡是啥样的有几个USB口及品牌。[rootemulMachine htdocs]# lspci |grep USB00:03.0 USB controller: Broadcom BCM5785 [HT1000] USB (rev 01)00:03.1 USB controller: Broadcom BCM5785 [HT1…

一日一技:ASP.NET Core 判断请求是否为Ajax请求

概述在写后台程序时,有时候需要知道客户端发送的是普通的请求,还是ajax 请求,最近在做项目的时候,有些地方需要判断当前的请求是不是ajax。特地找了下发现,jQuery 发出 ajax 请求时,会在请求头部添加一个名…

HttpHandler浅析

声明:本文为翻译文章,如有侵权,请告知,我将会在1个工作日内删除,谢谢. ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 总是想着展翅飞翔,但是却不料一直受伤,但是那寻梦的心啊,永远向往着远方. ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★…

神经网络简史:BP算法后的又一突破—信念网络

随着训练多层神经网络的谜题被揭开,这个话题再一次变得空前热门,罗森布拉特的崇高雄心似乎也将得以实现。直到1989年另一个关键发现被公布,现在仍广为教科书及各大讲座引用。多层前馈神经网络是普适模拟器( universal approximato…

Linux网络模块全局变量,()不是Linux系统的特色.

相关题目与解析UNIX是一个交互式的______操作系统,采用以全局变量为中心的模块结构。下列关于UNIX系统结构的描述中,正确的是______。A.UNIX系统是一个交互式的多用户、多任务分时操作按照变量的作用域可将变量划分为()A.公有、私有、系统B.全…

NET问答:Select 和 SelectMany 的区别

咨询区 Tarik:我已经 google 搜索了 Select 和 SelectMany 之间的区别,但我并没有找到合适的答案,我现在急切的需要知道在 Linq to SQL 时两者的区别而不是给我用Array展示...能否有人帮忙提供 Linq To SQL 的例子吗?回答区 Mike …

最好的FLV视频下载器 维棠 (支持优酷视频下载、土豆视频下载等)

维棠FLV视频下载能帮助你轻松下载国内外大多数FLV视频分享网站的视频内容;并且维棠FLV视频下载具有断点续传功能。 现在国内外出现了很多视频分享网站,每个用户都可以把自己的视频节目和其他人分享。这些网站有大量的在线视频资源,但是由于网络带宽的限…

linux ns3配置环境,Ubuntu下的NS3安装与入门

NS3的开发旨在为网络研究和教育提供开放,可扩展的网络仿真平台。简而言之,NS3提供了分组数据网络如何工作和执行的模型,并为用户提供了进行模拟实验的模拟引擎。使用ns-3的一些原因包括进行更难或不可能用真实系统执行的研究,在高…

龙芯3A5000完成流片 同主频性能追平AMD Zen1

前不久,龙芯3A5000完成流片,该CPU基于龙芯自主定义指令集LoongArch。据小道消息,SPEC06测试定点26分(base 2.5Ghz)。这个成绩已经达到预期指标,而且经过进一步优化,SPEC06成绩还有进一步优化的…

Funambol DM 安装过程

Funambol DM 安装过程 Funambol安装过程包括了 Java环境安装 ,Mysql安装 ,Jboss安装和 Funambol DM的安装 .一 : Java环境安装 1: Java现在使用的版本是 :jdk-1_5_0-windows-i586.exe . 2: 安装完毕 ,请在 windows系统下设置环境变量 JAVA_HOME{jdk的安装目录 } 如 : J…

熬夜族又一噩耗:“早死”风险更高!

根据美国西北大学范伯格医学院和英国萨里大学最近的一项研究,相比于早睡早起的人(百灵鸟一般),晚上不睡、早晨不起,或起床困难的“夜猫子”们,“早死”的风险更高。这项基于英国生物库中将近50万人样本的研…

Linux中append函数的用法,linux C代码 open函数参数:O_APPEND问题求助

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼没有截图,直接上代码吧。原代码是这样的:#include#include#include#include#includeint main(){int fd-1;ssize_t size-1;off_t offset-1;char buf1[]"0124553";char buf2[]"dsfafads";…

iNeuOS工业互联平台,生产过程业务联动控制

1. 概述工业物联网也好、工业互联网也好或是其他生产系统,反向控制始终无法回避。搞工业最直接、最体现效果的两个方面是采集各种数据和生产过程业务控制,所谓大数据预测和分析,那是仁者见仁、智者见智,下一篇文章我们会专业来讨…

t-sql里Linked server跨数据库查询

set ANSI_NULLS ON set QUOTED_IDENTIFIER ONgoALTER procedure [dbo].[updateData] as/*--必须先创建一个LinkedServerEXEC sp_addlinkedserverserverlyg,--被访问的服务器别名 srvproduct,providerSQLOLEDB,datasrclyg --要访问的服务器*/--登录上一步建好的服务器&#x…

linux防火墙开放所有端口命令,linux centos7 防火墙及端口开放相关命令

一、防火墙相关命令1、查看防火墙状态 : systemctl status firewalld.service注:active是绿的running表示防火墙开启2、关闭防火墙 :systemctl stop firewalld.service3、开机禁用防火墙自启命令 :systemctl disable firewalld.se…

如何使用 BenchmarkDotNet 对 C# 代码进行基准测试

BenchmarkDotNet 是一个轻量级,开源的,强大的 .NET 工具包,它可以将你的方法转化为基准并跟踪这些方法,最后对这些方法的性能提供一些测试报告,使用 BenchmarkDotNet 玩 基准测试 是非常容易的。你可以利用 BenchmarkD…