首页 > 其他分享 >Rust 助力无服务器构筑云计算新引擎

Rust 助力无服务器构筑云计算新引擎

时间:2024-09-11 16:37:41浏览次数:9  
标签:助力 运行 Amazon 开发者 服务器 Rust Lambda

引言

今年 Amazon Lambda 迎来了它的第一个十周年。在过去的十年里,无服务器架构改变了软件开发的方式,简化了应用程序的部署和扩展,成为云计算的新引擎。而在众多支持无服务器技术的编程语言中,Rust 以其卓越的安全性和高性能成为了开发者的宠儿。在这篇博客中,我们将探讨 Rust 如何在无服务器架构中发挥关键作用,并展望未来无服务器技术的发展方向。

image.png

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

无服务器架构的演变

Amazon Lambda 于 2014 年正式面向 Amazon Web Services 上的构建者提供服务,标志着无服务器计算的开始。无服务器架构允许开发者无需管理服务器即可运行代码,从而专注于业务逻辑的开发。这种模式极大地提高了开发效率,并降低了运营成本。

image.png

在过去的十年中,无服务器架构经历了显著的发展,从简单的事件驱动计算扩展到复杂的分布式系统。随着需求的不断增长,开发者对性能和安全性的要求也越来越高。这就是为什么 Rust 在无服务器技术中脱颖而出。

什么是 Rust

Rust 作为一门编程语言,一直以来,都有一群忠实的开发者粉丝群。他们选择 Rust 的原因在于 Rust 的安全性,高性能以及高效并发。尤其云计算蓬勃发展的近些年,Rust 凭借其独特的技术优势,逐渐成为了构建云基础设施的“香饽饽”。亚马逊云科技作为一家云供应商也对 Rust 这门编程语言情有独钟。

Rust 的安全性优势

Rust 的设计初衷就是解决内存安全问题。传统语言如 C 和 C++,尽管性能出色,但容易引发内存泄漏和数据竞争等问题。Rust 通过其独特的所有权系统和编译时检查,彻底消除了这些隐患。

在 Amazon Lambda 等无服务器环境中,安全性至关重要。应用程序可能会处理敏感数据,或在公共网络上运行。Rust 的内存安全特性确保了在编译时就能检测到潜在的安全漏洞,减少了运行时错误的可能性。这使得开发者在部署时更加安心。

Rust 的内存安全机制是基于“所有权”和“借用”两个核心概念。每个值都有一个“所有者”,而“所有者”负责在合适的时候释放内存。同时,Rust 通过“借用”机制,允许多个引用同时访问一个值,但不会出现数据竞争的问题。这种精妙的设计,确保了 Rust 程序在运行时不会出现空指针、内存泄漏等非常常见的内存问题。统计数据显示,高达 70% 的关键安全漏洞都源自内存错误,所以 Rust 无疑是一股强大的“免疫细胞”,为云服务筑起了坚实的防线。Amazon S3 就是用 Rust 构建的,Rust 的安全性对 Amazon S3 这系统的可靠性起着重要作用。

除了内存安全机制,Rust 强类型系统减少了运行时错误,增加了代码的可靠性和可维护性。

Rust 的高性能表现

除了安全,Rust 在性能方面也有着出色的表现。作为一门无垃圾回收的系统级语言,它可以直接编译为原生机器码,没有任何运行时开销。这使得 Rust 具有接近 C/C++ 的性能,在某些场景下甚至可以超越。

无服务器架构要求快速的启动时间和高效的资源利用。Rust 的无运行时架构使其在性能上具有显著优势。在 Amazon Lambda 的冷启动测试中,Rust 的启动时间几乎是瞬时的,这在需要快速响应和高并发的应用程序中尤为重要。

此外,Rust 的编译器优化和零开销抽象使得它在执行效率上优于许多其他语言。开发者可以利用 Rust 的并行处理能力,在不牺牲安全性的前提下,最大化地利用计算资源。

一位 Amazon Web Services Hero 做了一项测试,他使用不同 Amazon Lambda 运行时运行同等工作负载 25 亿次,结果如下图所示。Rust 的表现非常出色。事实上,它使用了大约四分之一的内存,但性能仍然优于其他实现。

image.png

因为高性能的表现,Rust 在无服务器环境中被广泛应用。举个例子,一个简单且典型的数据库应用。通过 Lambda 函数调用 DynamoDB 数据库,实现列举,选择,生成并删除产品信息。亚马逊云科技的架构师同学分别用 TypeScrip,Java,Go,Rust 以及 Kotlin 多种语言实现了这个应用程序。在他们共同努力运行了几万次后有了以下的运行结果:

image.png

首先很自豪的是,就热启动的响应时间来说,对大多数工作负载 Lambda 的运行速度非常快。无论哪个运行时,在稳定的状态下,都能获得高性能。另外 Rust 相对其他语言在性能助力上更胜一筹。有个小插曲是 Kotlin 好像表现更棒。究其原因,其实源于一个测试时将 Kotlin 变现的应用程序的 Lambda RAM 分配成了 2GB,其他语言包括 Rust 编写的应用程序 Lambda RAM 都给了 128MB。大家知道 Lambda 调用 CPU 时会给更多 RAM 的函数提供更多的计算量。我就奇怪,Rust 没有垃圾回收器,也没有运行时怎么可能比其他语言的性能差?!

image.png

再来看看 Lambda 在冷启动过程中,不同语言对于响应时间性能影响的比较。Lambda 冷启动是指函数第一次被调用时,需要启动一个新的运行环境,这个过程通常比较慢,因为需要完成一大堆的工作。比如:初始化 Lambda 运行时环境,包括加载必要的依赖库。设置 Lambda 函数的配置信息,如内存大小,超时时间等。再比如下载 Lambda 函数的代码包,反序列化代码包,并将其加载到新的运行中去。以及初始化 Lambda 函数上下文等等。这些步骤为请求做好准备,让这些运行时的托管环境就绪,以便交付响应。对 Go 而言,需要运行一个垃圾收集器,让它与应用程序一起启动,这无疑增加了冷启动的响应时间。TypeScript 也是如此,因为它有一个解释器需要一起启动。Java 更夸张,它甚至需要本地代码实现,即使在本地运行 Java 的 Lambda 函数,仍需要加载 JVM 和大量的依赖库,初始化开销特别大。

Rust 助力无服务器成为云计算的新引擎

我们认为,Lambda 是无服务器计算,而无服务器不仅仅是 Lambda。亚马逊云科技为云上构建者运行和构建现代应用程序提供最广泛的无服务器服务组合。

而亚马逊云科技一些明星云服务,如 S3 和 Fargate,都在使用 Rust 进行性能优化和安全强化。不仅如此,Amazon Web Services 还广泛采用 Rust 来开发关键的底层组件,比如,Bottlerocket 是一个基于 Rust 的容器优化操作系统,为 Amazon EKS 提供支撑。Firecracker 是支撑 Lambda 和 Fargate 的虚拟化引擎,同样采用了 Rust 进行开发。可以说,Rust 已经深入到 Amazon 云计算的“脊梁”之中,成为构建下一代云基础设施的关键力量。

除了这些基础设施级的服务和应用,Rust 在 Amazon Web Services 服务开发中也扮演着重要角色。Amazon SDK for Rust 就是一个很好的例子。利用这个 SDK,开发者可以轻松地与 Amazon Web Services 提供的各项云服务集成,构建复杂的分布式系统。

值得一提的是,Amazon Web Services 不仅积极使用 Rust,也在大力支持 Rust 生态系统的发展。Amazon Web Services 是 Rust 基金会的董事会成员,并为 Rust 基金会提供基础设施和技术支持。同时,Amazon Web Services 也雇佣了多名 Rust 项目的核心贡献者,协助改进 Rust 语言和重要库,如 tokio。这些努力无疑将推动 Rust 在云计算领域的进一步应用和普及。

展望未来:Rust 与无服务器技术的结合

在 Amazon Lambda 十周年之际,我们回顾过去的成就,同时展望未来的创新。Rust 作为 Amazon Lambda 的动力与安全保障,正在引领无服务器技术的新方向。有了 Rust 为无服务器技术在安全性和高性能打下坚实基础,未来的无服务器架构将更加强调资源效率和可持续发展,而 Rust 的低能耗特性也正好契合这一趋势。

我们可以看到 Rust 正在成为 Amazon Web Services 为代表的云计算服务的重要“引擎”。它出色的性能、安全性和可持续性,使其成为构建可靠、高效云基础设施的理想选择。同时可靠高效的云也为开发者的专注创新提供了更多的可能性。

让我们一起在云上开心构建吧!

文章来源:https://dev.amazoncloud.cn/column/article/66e152b77423f56e891f3183?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=bokey

标签:助力,运行,Amazon,开发者,服务器,Rust,Lambda
From: https://www.cnblogs.com/AmazonwebService/p/18408461

相关文章

  • 搭建加速服务器需要注意什么
    搭建加速服务器,无论是用于游戏、网站内容分发、文件下载加速还是其他用途,都需要注意以下几个方面:硬件和配置处理器:选择性能强劲的CPU,尤其是对于需要处理大量计算的应用。内存:确保有足够的RAM来处理高并发请求。存储:使用高速硬盘(如SSD),以提高数据读写速度。网络接口:具备足够带宽和低......
  • 简化登录流程,助力应用建立用户体系
    随着智能手机和移动应用的普及,用户需要在不同的应用中注册和登录账号,传统的账号注册和登录流程需要用户输入用户名和密码,这不仅繁琐而且容易造成用户流失。华为账号服务(AccountKit)提供简单、快速、安全的登录功能,让用户快捷地使用华为账号登录应用。用户授权后,华为账号可提供头像......
  • 影视网站需要服务器多大硬盘
    影视网站对服务器硬盘空间的需求取决于多种因素,包括存储的视频数量、视频的分辨率和时长、网站流量以及未来可能的扩展需求。以下是一些参考点:视频文件大小标清视频(如480P):单个视频文件可能从几十MB到几百MB不等。高清视频(如720P、1080P):单个视频文件大小通常在1GB到几个GB之间。超清......
  • GitHub 精选|8 个强大工具,助力你的开发和探究工作
    本文精选了8个来自GitHub的优秀项目,涵盖了低代码、报表工具、Web开发、云原生、通知管理、构建系统、生物计算、位置追踪、API规范和依赖更新等方面,为开发者和研究人员提供了丰富的资源和灵感。目录防弹React:构建强大的Web应用程序2.JeecgBoot:基于代码生成器的......
  • 公众号排名优化关键词不收录?解析展示技巧,助力排名优化
    做公众号排名优化但是关键词不展示不收录怎么办?要怎么解决这个问题呢?公众号排名优化的艺术,犹如精心雕琢的园艺,与众多数字平台的策略异曲同工,皆需深耕于网站与关键词的沃土之中,方能绽放排名之花。在这场无声的竞赛里,关键词不仅是引路的灯塔,更是构筑排名的基石,若无其收录,则如船行......
  • 淘宝商品详情API接口升级,助力商家提升用户体验
    在互联网高速发展的今天,电子商务已成为人们生活中不可或缺的一部分。作为国内知名的电商平台,淘宝拥有海量的商品资源,为了帮助用户更快捷地找到心仪的商品,淘宝推出了商品搜索API接口。这个接口如同一位智慧向导,引领着开发者在这庞大的商品海洋中,为用户提供精准、高效的购物体验......
  • 如何在 Debian 或 Ubuntu VPS 上安装 Openfire XMPP 服务器
    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。简介在本文中,将在Ubuntu服务器上安装OpenfireXMPP服务器。本文已经在Ubuntu12.04上进行了测试,但应该也适用于所有基于Debian的系统。在本文中,我将假设您的Drop......
  • redis通过6379端口无法连接服务器
    今天免费领取了一台云耀云服务器,但是在部署redis的时候碰到了redis在外网无法访问的情况,以下是针对碰到的问题,解决过程的记录。如果配置Redis在不可预知的情况下只能在内网访问,而外网无法访问,先检查一下步骤是否配置1、需要考虑到Redis配置本身是否支持远程外网访问,在redis的配置......
  • SRS流媒体服务器从入门到精通(其一,环境搭建)
    欢迎诸位来阅读在下的博文~在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力!江山如画,客心如若,欢迎到访,一展风采文章目录一、SRS简介二、SRS的应用场景三、环境搭建四、推流和拉流使用ffmepg推流和拉流使用OBS推流(推荐)五、补充一、SR......
  • MarsCode 用AI助力编码活动参与教程
    MarsCode用AI助力编码活动参与教程1.注册通过专有链接进入官网,并完成注册:https://www.marscode.cn/login?utm_source=community&utm_medium=jxh&utm_campaign=v0.1一定要在当前链接内完成注册也可通过手机扫码完成注册2.下载访问官网首页(marscode.cn),点击“立即获取编......