写点什么

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

  • 2020-11-30
  • 本文字数:2645 字

    阅读完需:约 9 分钟

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

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


本文最初发表于 https://serokell.io/《9 Companies That Use Rust in Production》),经原作者授权,由 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 编写的开源服务Firecracker VMM。 它是一个虚拟机监视器,最初目的是为 AWS Lambda 和 AWS Fargate 服务构建的。

Discord


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


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


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


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


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


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

Rust 的未来


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


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


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


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


英文原文链接:9 Companies That Use Rust in Production

2020-11-30 08:006994
用户头像
蔡芳芳 InfoQ主编

发布了 737 篇内容, 共 426.5 次阅读, 收获喜欢 2627 次。

关注

评论

发布
暂无评论
发现更多内容

照亮无尽前沿之路:华为正成为科技灯塔的守护者

脑极体

【愚公系列】2022年12月 微信小程序-页面栈和页面路由

愚公搬代码

12月月更

极客时间运维进阶训练营第四周作业

LiaoWD

pipeline SonarQube jenkins高级用法

架构实战营 1-2 架构图随堂测验

西山薄凉

「架构实战营」

数据治理:指标体系管理

用友BIP

空间节省50%,时序性能提升5倍,三一重工从Hadoop+Spark到MatrixDB架构变迁实现One for ALL

YMatrix 超融合数据库

三一重工 超融合数据库 数据库· YMatrix

小令观点 | 不希望我的身份被别人冒用,该怎么办呢?

令牌云数字身份

网络安全 人脸识别 芯片技术

2022-12-01:从不订购的客户。找出所有从不订购任何东西的客户,以下数据的答案输出是Henry和Max,sql语句如何写? DROP TABLE IF EXISTS `customers`; C

福大大架构师每日一题

数据库 福大大

华为云数据库GaussDB(for Cassandra)揭秘:内存异常增长的排查经历

科技说

爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析 | 龙蜥技术

OpenAnolis小助手

开源 cpu 爱奇艺 混部 龙蜥操作系统

50亿海量数据如何高效存储和分析? 华为云数据库GaussDB (for Cassandra) 3个秘诀搞定

IT科技苏辞

华为云数据库GaussDB(for Influx)与开源企业版性能对比

清欢科技

国产自研、安全、高可用——袋鼠云大数据基础平台EasyMR筑基企业数字化转型

袋鼠云数栈

大数据 hadoop 数据中台 基础数据平台 12 月 PK 榜

Web Development Technology Trends for 2023

Mahipal_Nehra

UI UX AI Codec Metaverse

火山引擎边缘云荣获2022全球分布式云大会两项大奖

火山引擎边缘云

云原生 边缘计算 边缘云 火山引擎边缘计算

腾讯智慧农业首次亮相,助力青海大通农产品走进大湾区

科技热闻

04 Redis sentinel 模式存储试卷

神奇的叶叔叔

华为自研分布式时序数据库集群:初始GaussDB(for Influx)

清欢科技

架构实战营 1-1 架构概念随堂测验

西山薄凉

「架构实战营」

移动开发跨平台框架,你了解多少?

FinClip

App长登录思考与实现

石君

信息安全 APP开发 认证

RocketMQ 全链路灰度探索与实践

Apache RocketMQ

RocketMQ 服务端 灰度

接口测试快速入门-1

度假的鱼🐟

接口测试 11月月更

华为云数据库GaussDB(for Cassandra)揭秘:高性能低成本是什么样的体验?

科技说

华为云数据库GaussDB (for Cassandra) 数据库治理 -- 大key与热key问题的检测与解决

IT科技苏辞

WeLink互动直播:维护网课秩序,杜绝外人乱入

与时俱进的时代

测试如何发展副业,提升斜杠收入

老张

码农副业 斜杠

干货|成为优秀软件测试工程师的六大必备能力

SoFlu软件机器人

2023免费双系统虚拟机软件CrossOver2023

茶色酒

crossover CrossOver2023

常用的十大Python开发工具

千锋IT教育

内部CRM和商业化SAAS CRM的区别

久歌

SaaS 架构设计 CRM

在生产中使用Rust的著名公司及他们选择Rust的理由_编程语言_Gints Dreimanis_InfoQ精选文章