2021 年,字节正式成立了 Rust 方向的团队,开启了内部微服务基础设施和基础库的研发,并在 2022 年下半年开始接入业务,在多个高性能服务上落地,如 FaaS、直播业务线、Mesh 控制面、数据平台、图数据库、WebAssembly 等。去年 9 月,字节跳动还开源了 RPC 框架 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 创造贡献。” 吴迪透露。
GOTC 2023 将于 5 月 27 日至 28 日在上海张江科学会堂举办,有一个主论坛,十多个分论坛。其中,“Rust 专题论坛” 的承办方是字节跳动,出品人是字节跳动服务框架 Rust 负责人、CloudWeGo Volo 负责人吴迪。该论坛主要分享 Rust 使用技巧以及语言相关生态的发展情况等内容。
全球开源技术峰会(Global Open-source Technology Conference) GOTC 2023 由开放原子开源基金会、 Linux 基金会亚太区、上海浦东软件园和开源中国联合发起, 将于 5 月 27 日至 28 日在上海张江科学会堂隆重举行。
这场面向全球开发者的盛大开源技术盛宴,堪称 2023 年开源风向标。大会将以行业展览、主题发言、专题论坛、开源市集的形式展现,与会者将一起探讨元宇宙、3D 与游戏、eBPF、Web3.0、区块链等热门技术主题,以及开源社区、AIGC、汽车软件、AI 编程、开源教育培训、云原生等热门话题,探讨开源未来,助力开源发展。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !