社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Rust又被降本增效选中!Rust替代Python,亚马逊云成本降为1/4!

运维 • 1 周前 • 34 次点击  
一种神奇的组合出现了!Rust和无服务器搭配,可能比使用Python要省下一大笔钱!

众所周知,Lambda函数和大型运行时是一个糟糕的组合,因为跟本机代码相比,冷启动速度较慢,内存需求更高。另一方面,许多开发人员使用Java和Python比使用Rust等系统语言开发起来会更有效率。 
 
然而现在,不需要用Rust重写整个Lambda函数(Python),就可以真正的“降本增效”。
 

基于Python的AWS太复杂,
改用Rust解决后,成本降为1/4!

 
一位云咨询公司CloudEX的工程主管,Merdler Kravitz举了一个Lambda函数的例子,该函数使用Python列出S3(简单存储服务)存储桶。事实证明,用于Python的AWS SDK Boto3过于膨胀,通过用Rust替换需要Boto3的函数,可以在成本和性能方面获得巨大收益——即使Python仍在用于其他代码。
 
用Rust替换Python代码的关键是PyO3,它为Python提供了Rust绑定。Rust代码中的属性将函数公开为标准Python接口。
 
结果,在Merdler Kravitz提出的例子中,冷启动速度快了三倍,对内存的要求也低得多。对于1GB的RAM,Rust和Boto3代码具有相似的性能,但对于256MB的RAM,增强版Rust仍然表现良好,而另一个则不然。 
 
在Lambda中使用Rust的成本效益:re:Invent上的一个例子
 
尤其是在无服务器平台上,减少所需的计算资源可以降低成本。“Rust平均比Python更便宜,大概是后者的1/3到1/4,”他声称。
 
在re:Invent会上,AWS同时宣布了其用于Rust的SDK已准备好生产。 去年11月早些时候,这家云巨头基于“最小容器映像”为Lambda添加了对亚马逊Linux 2023的支持,并表示其关键用途之一是“在使用编译为本地代码的语言时,如Go或Rust。”

亚马逊与Rust结缘已久

 
至少自2015年以来,Rust对AWS服务的非官方支持就一直存在,当时Matthew Mayer和Anthony DiMarco在Rust 1.0发布后不久启动了一个名为Rusoto的独立项目,目标包括学习Rust。根据Rust crate 存储库crates.io的统计数据,Rusoto的下载量已超过1100万次。
 
AWS Rust SDK的第一个alpha是由当时在AWS的iliana etaoin于2021年推出的,她是Rusoto的共同维护者。
 
根据介绍,官方的Rust SDK现在支持300多项AWS服务,并“支持异步/等待、非阻塞IO和构建器等现代Rust语言功能”。
 
AWS Lambda还有一个实验性的Rust运行时,它简化了Rust中的运行功能,并包括支持Lambda事件、扩展和Lambda runtime API的crate 。一个名为Cargo Lambda的相关项目支持使用Lambda模拟器进行本地开发和测试,以及在Windows或macOS上开发时为Linux进行交叉编译,无论开发人员的PC上运行的是什么,都可以选择ARM64和x86-64。使用Rust构建Lambda,亚马逊官方也给出了详细的文档。
 
 
当然,实验性代码不用于生产,因此在Lambda上使用Rust还为时过早。不过现在,可以看出回报将会很大。
 
榜样的力量是无穷的。据某职场社交平台上亚马逊内部员工反馈,“这里人人都用Rust ”,有网友还指出,Rust编译器团队的leader Jon Gjergeset,也在亚马逊任职。
 
 
这位员工甚至做出了判断:Rust 早晚会替代C++。

 AGI时代,Rust为什么比Python吃香
 
都有哪些场景使用Rust?一个简单的回答就是所有使用C/C++的场景。
 
但与此次亚马逊宣布的部分替换Python而言,还有一个场景Python越来越有被替代的风险。

就是进入到“大模型应用开发”语境后,原来的“Python+Docker”的机器学习开发框架正在面临严重的挑战。
 
构建机器学习应用时,更多人会想到Python+Docker,然而当时间来到“大模型时代”,再基于这一组合构建大模型应用似乎就会不合时宜,Python的性能和Docker的冷启动问题都注定了这一事实:当处理需要大量计算的大型数据集或复杂模型时,不太可能会成为这一领域的主流选择。

一方面,Python是解释性语言,编译速度较慢,维护方面的问题也较为严重;另一方面,Docker越发暴露出磁盘空间消耗、硬件加速器支持、可移植性、安全依赖等问题。
 
基于此,有业界人士认为:Rust+WASM更有希望取代Python+Docker,成为LLM生态构建基础设施的主要场景。这不得不让人想到马斯克那句“AGI会建立在Rust上”的猜测。
 
 
单讲Rust,Rust为什么会被追捧为AGI时代的编程语言
 
首先,编译极快:Rust 是一种编译语言,以其极快的性能而闻名。当与基于堆栈的虚拟机的二进制指令格式 WebAssembly 结合使用时,这两个组合有望提供无与伦比的执行速度。
 
其次,内存安全:Rust 的突出特点之一是它强调内存安全而不牺牲性能。这确保了应用程序既快速又安全。
 
然后,并发性:Rust 的并发性方法是独一无二的。它确保在编译时捕获数据竞争(并发系统中最常见和最具挑战性的错误之一)。这意味着开发者可以编写并发代码,而不必担心引入难以检测的运行时错误。
 
此外,富有表现力的类型系统:Rust 拥有强大且富有表现力的类型系统。该系统不仅有助于在编译时捕获错误,而且还允许开发者以清晰简洁的方式表达他们的意图。
 
同时,现代包管理:Cargo,Rust 的包管理器,简化了管理依赖项、构建项目甚至发布库的过程。因其易用性和高效性而受到赞誉的工具。
 
最后,快速增长的生态:Rust 的生态正在蓬勃发展。像“ndarray”、“llm”、“candle”和“burn”这样的库证明了大模型相关的社区积极参与扩展 Rust 的LLM应用开发的能力。
 
那么为什么还需要WebAssembly?
 
与绝大部分 “现代编程语言” 不同,Rust 的一个亮点是它可以直接编译成机器码,不需要一个中间的 “运行时”。然而,许多场景诸如浏览器、云原生、边缘设备等,直接运行机器码是不被允许的。即便熟练Rust也缺少一个与之相匹配的运行时才能跑得通。
 
在实践中,人们会发现 WebAssembly 就成为了 Rust 运行时的首选之一。细心的人也可能注意到:Rust 编译器也添加了 Wasm 平台的 target。两者简直天作之合。
 

新的开发语境到来
国内和国外,Rust采用差距

 
国内开发跟国外开发有个很显然的不同。
 
国内软件行业的大型底层项目相对国外来说少的多,开发方向主要在需求不断更迭的上层逻辑。

过去三四十年,开发者更多专注于业务应用层上,做功能模块的排序与堆叠,而底层代码的研究更多像一个个毛线团,想要条分缕析,并非一日之功,只能说这并不适合当时快速扩张的主旋律。
 
 
然而,我们也慢慢看到新的开发主题正在到来:业务侧更关注安全、可靠,更关心供应链的依赖是否可持续,更关心会不会被卡脖子。比如:去年微软Azure的首席技术官 Mark Russinovich 的一条推文上了技术圈的热搜,他想要弃用C++,搬家到Rust上的意图非常强烈。
 
 
据说有意思的是,微软所有70%的常见漏洞和暴露都与内存安全问题有关。而且,尽管人们花了很多努力来修复这些问题,但它们仍在飙升。
 
为此,微软安全响应中心已经启动了安全系统编程语言计划,打算将他们的项目迁移到Rust项目中。甚至后来大家都知道的Windows内核,也开始用Rust来重写。
 
所以我们看到众多知名企业也在大力投入 Rust,比如国外的企业如微软、谷歌成为了 Rust 基金会白金赞助商之一,AWS 更是直接将 Rust 官方团队的成员招入麾下开启了抢人大战,Meta(原 Facebook)正式宣布 Rust 作为其服务端支持的语言等等。
 
再比如,国内科技公司如华为、字节跳动等公司均在内部培养了 Rust 团队并推动 Rust 的落地,PingCAP 采用了 Rust 实现 TiKV,以及众多明星初创企业如达坦科技和海致星图直接选择 Rust 作为其产品的主力语言。
 

根据字节跳动Volo负责人吴迪的演讲内容整理,有增删

 
然而,有一种观点认为:国内不会大规模使用 Rust,即便要用 Rust,应该会从各大云厂商开始,而且是各种底层项目,目前云厂商更主流的语言是 Golang,因为 Golang 的开发效率相当的高,这很符合国内云厂商的商业逻辑。幸运的是,字节跳动正在从 Golang 转向 Rust。 
 

写在最后:时代选择了Rust

 
一个语言的兴起,往往是它解决了所处时代的痛点问题。PHP解决了门户网站快速搭建的问题,Python降低了编程的门槛,Java解决了移动时代的应用开发需求,C/C++则很早在系统底层做出了40多年前的贡献。
 
Rust也是如此。与绝大部分 “现代编程语言” 不同,在一个强调底层安全、快速、可靠的新背景下,Rust被选中了。从15年稳定版算起,Rust的确走过的时间还很短。它已经连续8年成为开发者中最受尊敬的语言!
 
2023年StackOverflow开发人员调查显示,85%使用Rust的开发人员希望明年再次使用它。
 

最后来个小花絮,2023过去,那些在日常中应用和开发Rust,是怎么样一种感觉?
 
我们选取了这四种有态度的看法,全当一窥国内Rust开发者的现状,可以看出也是一个升级打怪的过程,以此共勉吧——
 
全职Rust的开发者:「一开始做Rust全职还是挺开心的,但是没两个月激情就没了,天天写真的够呛,现在也变成天天吐槽“垃圾Rust”了。」
 
带队Rust项目的leader:「建议自己培养,别听网上瞎扯 Rust 入门有多么难。只要公司里有一个很懂 Rust 的,其他人就都可以快速上手。」
 
上岸者:「自己不去作死搞复杂的带三四个 lifetime 的 generic,一般不会出问题。Rust 上手写业务只要一个月,想写花里胡哨的东西才需要经验。」
 
使用Rust8年以上的大牛:「我带的新人大都有Java或C等语言基础, 基本上一个月都能上手, 算法, 异步和多线程都没问题, 甚至还有文科生转过来写rust的, 他们都觉得不难。」

参考链接:

https://devclass.com/2023/12/21/rust-in-aws-lambda-a-magic-ingredient-to-reduce-cost-and-increase-performance/

https://zhuanlan.zhihu.com/p/624525824

https://juejin.cn/post/7181794889238052901

https://www.zhihu.com/question/537491737/answer/2527548502

https://zhuanlan.zhihu.com/p/667210058

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/180816
 
34 次点击