翻译 | 阿里巴巴的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可以轻轻松松管理上千台服务器、上万个容器节点。
|
1月前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
55 5
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes的奇妙之旅
【9月更文挑战第34天】在数字化浪潮中,云原生技术如Kubernetes已经成为IT行业的重要力量。本文旨在通过浅显易懂的方式,向初学者揭示Kubernetes的核心概念、架构设计及其在实际业务中的应用价值,帮助读者快速理解并掌握这一技术,为进一步深入学习和实践打下坚实基础。
72 1
|
4月前
|
安全 项目管理 数据库
"揭开Dify社区版神秘面纱:一键部署,体验开源项目管理的革命性突破!"
【8月更文挑战第20天】Dify社区版是一款开源项目管理工具,集成任务跟踪、文档协作等功能,助力团队高效协作。本文引导快速部署体验。需Linux服务器,安装Docker及Docker Compose,并能访问GitHub。从GitHub克隆源码,配置`docker-compose.yml`如数据库设置,运行`docker-compose up -d`启动服务。通过`http://<服务器IP>`访问Web界面,建议配置HTTPS增强安全。定期`git pull`及`docker-compose`命令实现维护升级。Dify以其实用性和灵活性,正成为项目管理领域的新兴力量。
702 1
|
7月前
|
存储 消息中间件 分布式计算
重磅开源!阿里巴巴分布式核心原理,成功登顶GitHub周榜!
分布式系统架构是当今互联网企业的重要基础设施,它能够支撑海量用户并发访问和亿级数据量的超大规模业务系统。阿里巴巴作为互联网巨头,在分布式架构方面有着丰富的经验与成果(文末有免费领取方式!)
|
Kubernetes jenkins 持续交付
云原生翘楚KubeSphere 和 知名开源项目 Pig 最佳实践
云原生翘楚KubeSphere 和 知名开源项目Pig 爱的火花。
502 0
《敖小剑-双管齐下:Servicemesh和Dapr的实践与展望》电子版地址
敖小剑-双管齐下:Servicemesh和Dapr的实践与展望
117 0
《敖小剑-双管齐下:Servicemesh和Dapr的实践与展望》电子版地址
|
Cloud Native 开发者
云原生应用插件扩展训练营上线,帮你开始开源社区贡献者之旅!
阿里云开发者学堂联合云原生开发平台推出了云原生应用插件扩展训练营,帮你开始开源社区贡献者之旅!
云原生应用插件扩展训练营上线,帮你开始开源社区贡献者之旅!
|
运维 Kubernetes Cloud Native
读书笔记 | serverless技术解析与落地实践
读书笔记 | serverless技术解析与落地实践
157 0
下一篇
DataWorks