翻译 | 阿里巴巴的Dapr实践与探索

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 本文原文来自Dapr Blog,作者阿里云高级技术专家敖小剑。本文是我根据自己的理解翻译了其中的一部分并加了一些参考文献中的内容,所以并非完整翻译。

本文原文来自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,我们的客户可以更加快速和便捷地构建具有可移植性和健壮性的分布式系统”。

3 Dapr在阿里巴巴的实践

从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的功能、性能以及稳定性。

References

英文原文作者:敖小剑,发布于Dapr Blog,点此阅读

Dapr文档:https://docs.dapr.io/

Dpar for .NET Developers:https://aka.ms/dapr-ebook

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
存储 运维 Kubernetes
终于读完了阿里云p9专家分享云原生Kubernetes全栈架构师实战文档
Kubernetes(简称K8s)发布至今已经被越来越多的公司所接纳,其受欢迎程度更是超过了人们的想象,已逐渐成为很多公司的标配,尤为重要的是掌握Kubernetes几乎成为所有互联网技术人员必备的一项技能。 Kubernetes的诞生象征着下一代云计算的时代已经来临,它的出现让很多应用和架构逐步实现了统一化、标准化、简单化,降低了公司因为架构设计不合理带来的问题,而且也大大减少了运维成本,使用Kubernetes可以轻轻松松管理上千台服务器、上万个容器节点。
|
安全 算法 Java
5种阿里常用代码检测推荐 | 阿里巴巴DevOps实践指南(十二)
随着业务演进和团队扩张,软件规模和调用链路越来越复杂。如若没有良好的代码检测机制,只依靠功能性验证,团队技术债会越累越高,开发团队往往要花费大量的时间和精力发现并修改代码缺陷,最终拖垮迭代进度、协作效率,甚至引发严重的安全问题。
5种阿里常用代码检测推荐 |  阿里巴巴DevOps实践指南(十二)
|
4月前
|
消息中间件 存储 NoSQL
阿里开源中间件一览
阿里开源中间件一览
299 2
|
5月前
|
存储 消息中间件 分布式计算
重磅开源!阿里巴巴分布式核心原理,成功登顶GitHub周榜!
分布式系统架构是当今互联网企业的重要基础设施,它能够支撑海量用户并发访问和亿级数据量的超大规模业务系统。阿里巴巴作为互联网巨头,在分布式架构方面有着丰富的经验与成果(文末有免费领取方式!)
|
人工智能 Kubernetes Cloud Native
26场技术分享,阿里云容器服务负责人易立领衔带来容器、AI、Serverless、中间件最佳实践
26场技术分享,阿里云容器服务负责人易立领衔带来容器、AI、Serverless、中间件最佳实践
|
Java 中间件 程序员
重磅!不容错过的阿里内部微服务速成手册也太赞了(2023版)
大家都知道Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。这样一看:马爸爸可以说是左手双十一,右手阿里开源组件,不仅占据了程序员的购物车,还要攻占大家的开发工具(手动狗头)。
阿里毕玄:RPC 框架优化之路,从 37k 到 168k
阿里毕玄:RPC 框架优化之路,从 37k 到 168k
137 0
《敖小剑-双管齐下:Servicemesh和Dapr的实践与展望》电子版地址
敖小剑-双管齐下:Servicemesh和Dapr的实践与展望
111 0
《敖小剑-双管齐下:Servicemesh和Dapr的实践与展望》电子版地址
|
敏捷开发 Kubernetes Cloud Native
探索云原生之“翻译翻译,什么是云原生”
探索云原生之“翻译翻译,什么是云原生”
|
Cloud Native 开发者
云原生应用插件扩展训练营上线,帮你开始开源社区贡献者之旅!
阿里云开发者学堂联合云原生开发平台推出了云原生应用插件扩展训练营,帮你开始开源社区贡献者之旅!
云原生应用插件扩展训练营上线,帮你开始开源社区贡献者之旅!