字节跳动:将持续投入Rust,期待更多Rust生态合作和建设 – 程序师-迪欧吧

2021 年,字节正式成立了 Rust 标的目的的团队,开启了内部微办事基础设施和基础库的研发,并在 2022 年下半年开始接入业务,在多个高性能办事上落地,如 FaaS、直播业务线、Mesh 控制面、数据平台、图数据库、WebAssembly 等。去年 9 月,字节跳动还开源了 RPC 框架 Volo 及相关生态(项目地址:https://github.com/cloudwego/volo)。

在 GOTC 2023 临近之际,字节跳动办事框架 Rust 负责人、CloudWeGo Volo 负责人吴迪表示:“未来我们将持续在 Rust 标的目的上进行投入,包罗公司表里部布道推广,基础设施建设,如 crates.io 的国内镜像 rsproxy.cn,以及开源生态的建设完善。”

据了解,此前字节内部主要是使用 Go 语言。不外 Go 语言性能上限较低,对深度优化不友好,于是办事框架团队开始探索 Rust 的潜力。他们发现,经过精细优化的 Go 办事使用 Rust 语言重写并经过简单优化之后,收益明显:CPU 遍及收益在 30% 以上,有些能达到 50% 以上,甚至观察到过 4 倍的 CPU 收益;内存收益更为明显,遍及在 50% 以上,有些甚至能达到 90%。这帮手字节节省了大量的资源。

更重要的是,Rust 语言解决了 Go 语言 GC 所导致的不成预测的抖动问题,帮手其业务大大降低了超时率 / 错误率,降低了 P99 延迟,提升了业务的 SLA。

不外吴迪也提到, Rust 语言和 Go 语言并不是对立关系,而是互补关系,彼此取长补短。对于需要极致性能、低延时、重计算、内存瓶颈的应用,以及需要不变性并能接受必然迭代速度损失的应用,保举使用 Rust,Rust 在极致性能优化和安全性上的优势可以在这类应用中得以发挥。对于性能不十分敏感的应用、重 IO 的应用以及需要快速开发快速迭代胜过不变性的应用,保举使用 Go 语言。需要按照应用自身的特性以及团队的技术栈来选择合适的语言。

除了在办事端业务和架构侧的落地,Rust 也在字节内部安全、内核、AI、 前端和客户端领域均有必然程度的探索和落地。

比如,前端上大量使用了 Rust + WebAssembly、Rust + NodeJS 和 Rust 工具链,其中就包罗将在 GOTC 2023 “Rust 专题论坛” 进行分享的 RsPack 等项目;在客户端标的目的,字节也有多个业务使用了 Rust 语言,最为突出的是飞书客户端,飞书客户端所有的逻辑均使用 Rust,有数百万行的 Rust 代码,可能是中国目前最大的 Rust 项目。

字节也在努力回馈 Rust 开源社区。其开源的 RPC 框架 Volo 是一个追求极致性能,同时有着高扩展性和易用性的 RPC 框架,目前主要支持 Thrift 和 gRPC,针对 HTTP 的支持也已经在规划中;还开源了一个高性能的基于 io_uring 的异步运行时 Monoio。

除此之外,字节也在积极地回馈上游依赖项目,比如 tokio 以及 Rust 编译器本身。在开发 Volo 时,字节跳动办事框架团队遇到了一些编译器的 bug,于是提了对应的 issue 和 pr,并最终被 Rust 编译器团队接受。其它的团队也有开源一些 Rust 的项目,比如近期开源的 RsPack、g3、monolake 和 keystone 项目。据了解,字节内部仍有其它 Rust 项目正在计划开源中。

“我们正在培养 Rust 编译器的 contributor,希望未来能有机会加入 Rust 官方团队,期待更多 Rust 生态合作和建设,持续为 Rust 创造贡献。” 吴迪透露。

OSC开源社区

未经允许不得转载:迪欧吧_技术交流_资源分享_热点资讯_免费VPS空间 » 字节跳动:将持续投入Rust,期待更多Rust生态合作和建设 – 程序师-迪欧吧

相关推荐

    暂无内容!