Hi!请登陆

在生产中使用Rust的著名公司及他们选择Rust的理由

2020-12-1 28 12/1

Rust已经悄然成为了最受欢迎的编程语言之一。作为一门新兴底层语言,Rust拥有着内存安全性机制、不亚于C语言的性能优势、出色的开发者社区等等。本文还介绍了那些正在使用Rust的著名公司以及这些公司选择Rust的原因。

本文最初发表于https://serokell.io/(《9CompaniesThatUseRustinProduction》),经原作者授权,由InfoQ翻译并分享。

你可能还不知道,Rust已经是目前最有前途且最受欢迎的编程语言之一了。

它最初由Mozilla创建,后来被Dropbox、Microsoft、Facebook等公司采用。Rust的主要优点是,它在保持使用JavaScript和Python等语言进行开发时所拥有的内存安全性的同时,还能够实现不亚于C的性能。

在这篇文章中,我将介绍9家使用Rust的大公司,并探究他们选择Rust的原因。

9个Rust成功应用的案例Dropbox

Dropbox使用Rust作为其部分文件同步引擎。由于文件同步引擎是高度并发的,所以编写、测试和调试都很困难。因此,团队选择用Rust将这部分进行了重写。当需要处理复杂的代码库和并发时,Rust的静态类型和编译时检查使它比Python等动态类型语言更具有优势。

Rust是我们团队的力量倍增器,使用Rust是我们做出的最正确的决定之一。除了性能,它的人机工程学和对准确性的保证帮助我们降低了同步的复杂性。我们可以在类型系统中对系统的复数不变量进行编码,并让编译器为我们检查它们。(原文)

Dropbox的技术博客上有更多关于Rust的使用信息。

Coursera

Coursera在他们的编程作业功能中使用了Rust,学生需要编写并运行一个计算机程序来解决一个问题。程序在Docker容器中运行、测试和分级。出于安全原因,开发团队需要对某些代码使用像Rust这样的低级语言,他们认为Rust比C更安全。

尽管C是大家默认的低级控制编程语言,但是它对二进制文件有严格的安全性和正确性要求。我们选择了Rust,一种来自Mozilla的现代原生语言。Rust的一个重要的特点是其强大的类型系统,它完全不受某些类型安全漏洞的影响,这使它成为实现关键安全功能的极佳选择。(原文)

你可以到他们的博客上获得更多关于他们在编程任务中使用Rust的详细信息。

Figma

Figma是一个基于web的矢量图形和界面原型设计工具。他们选择在Rust(以前用的是TypeScript)中重写他们的多人同步引擎以提高性能,因为他们的服务器能力已经无法满足用户的增长速度需求了。

我们选择用Rust进行重写,因为它在同类语言中有着最好的速度和较低的资源使用率,同时还具有标准服务器语言的安全性。低资源使用率对我们来说特别重要,因为旧服务器的一些性能问题是由垃圾回收器导致的,而Rust不会有这个问题。(原文)

Figma的博客上有更多关于Rust的使用文章。

npm

npm是一个JavaScript的包管理器。之所以它的工程师团队选择用Rust重写他们的主要服务,是因为他们意识到,如果用户继续增长,服务器的性能很快就会成为瓶颈。他们拒绝使用像C和C++这样的技术,因为他们觉得C和C++处理不好web公共服务的内存管理问题。npm不使用Java的原因,是因为java需要在服务器上部署JVM。

npm面临的挑战只有高效和可伸缩的解决方案才能解决。假如一个服务部署后就不用关心它的存在,便可以节省工程师宝贵的研发时间,让他们关注其他问题。npm员工也很重视一种技术生态中是否有对其提供帮助的技术社区。Rust符合所有这些标准,所以Rust现在是npm的技术堆栈之一。(原文)

想要了解更多的话,请阅读Rust主页上的案例研究。

Microsoft

Microsoft最近开始尝试将Rust集成到其大型C/C++代码工程中。

Microsoft采用Rust的主要原因是其提供的内存安全性。过去的12年里,在Microsoft发现的CVEs(常见的漏洞和缺陷)中大约有70%与内存安全有关。Microsoft已经尝试了各种方法来解决这个问题,例如对开发人员进行大量的培训、使用静态分析工具等。然而,最终发现想要解决这个问题的办法只能是在内存安全上下功夫,把这条路堵上。

Cloudflare

Cloudflare在其核心边缘逻辑中使用了Rust,并将其作为内存不安全的C的替代方案。

他们在GitHub上展示了18个使用Rust的开源仓库,在他们的博客上记录了使用Rust开发防火墙规则的文档,这是一个可灵活定制的防火墙工具。

通过对性能、内存安全、低内存的需求评估,综合我们正在开发的其他产品(如Spectrum)的能力需求,Rust脱颖而出,成为了最佳的方案选择。(原文)

Facebook

Facebook使用Rust重写了之前用Python编写的源码控制后端。他们曾经一直在寻找一种编译语言来重写它,Rust的安全性吸引力还是很足的,之后Rust就被源代码控制团队使用了。让Facebook采用Rust的原因,主要是编译器反馈循环的易用性可以帮助降低bug造成的经济损失,而不是静态分析和代码审查。

Rust在编译时可检测出大量的严重错误,一个错误在编译时造成的损失要比在生产时少几个数量级。

Amazon

AWS已经在Lambda、EC2和S3等对性能敏感的服务组件上使用了Rust。此外,该公司公开支持和赞助该语言及其生态系统的开发。

亚马逊也有一个完全用Rust编写的开源服务FirecrackerVMM。它是一个虚拟机监视器,最初目的是为AWSLambda和AWSFargate服务构建的。

Discord

Discord在其多个工程中使用了Rust,包括客户端和服务器端。

例如,通过使用ElixirNIFs(原生实现的功能),团队基于Rust和Elixir将并发用户量扩展到了1100万。在这种情况下,Rust使他们能够在保证内存安全的同时提升现有Elixir代码的效率。

他们还在Rust(原来是Go)中重写了Readstate服务。虽然Go版本的服务在大多数情况下性能已经足够快了,但由于Go的内存模型和垃圾收集器缺陷,它有时会出现较大的延迟峰值。

为了解决这个问题,不得不切换使用Rust,它提供了一种独特的内存分配系统,不再使用垃圾收集器。

除了性能之外,Rust对工程团队还有许多优势。例如,它的类型安全性和borrowchecker特性,使得在产品需求发生变化或语言功能调整升级时,重构代码变得非常容易。此外,其生态系统和工具都非常优秀,并且发展状态良好。(原文)

想了解更多关于Discord使用Rust的信息,请查看他们博客上的这篇文章。

Rust的未来

以上提到的大多数公司,Rust都作为了C语言的一个更好的替代方案,用Rust进行重写,可以避免性能下降。当团队需要更优的性能,但又想避免与C相关的内存问题时,他们就会选择使用Rust。

但是Rust的优势还不止这些:它使底层编程更容易,对WASM有出色的支持,并且对并发性支持更好,有着活跃的技术社区。

在未来,随着越来越多的公司发现Rust可以对自己现有的工程进行优化,预计Rust的使用量将会增加更多。

如果你想了解更多关于Rust的知识,可以到我们的博客上查看快速入门。

原文链接:

9CompaniesThatUseRustinProduction

摁住巨头:腾讯阿里们要小心了?

InfoQ写作平台欢迎所有热爱技术、热爱创作、热爱分享的内容创作者入驻!

还有更多超值活动等你来!

相关推荐