字节跳动开源Volo:国内首个基于Rust语言的RPC框架 - 元宇宙


本站和网页 http://www.yitb.com/article-31447 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

字节跳动开源Volo:国内首个基于Rust语言的RPC框架 - 元宇宙
元宇宙:本站分享元宇宙相关资讯,资讯仅代表作者观点与平台立场无关,仅供参考.
商务合作
首页
XR
WEB3.0
Blockchain
NFT
AI
百科
元宇宙
WEB3.0
字节跳动开源Volo:国内首个基于Rust语言的RPC框架
字节跳动开源Volo:国内首个基于Rust语言的RPC框架
InfoQ
2022年9月03日10时
8 月 30 日,字节跳动基础架构的开源项目 CloudWeGo 正式发布 Rust RPC 开源框架 Volo。Volo 是一个轻量级、高性能、可扩展性强、易用性好的 Rust RPC 框架,使用了 Rust 最新的 GAT 和 TAIT 特性。
在字节内部,Volo 已经落地多个业务和基础组件,并且取得了超预期的性能收益(与 Go 版本对比,不那么公平)。
Volo 与其它 CloudWeGo 开源项目一样,坚持内外维护一套代码,为开源使用提供了强有力的保障。同时,我们观察到 Rust 开源社区在 RPC 框架这块还比较薄弱,Volo 的开源希望能为社区的完善贡献一份力量,同时也能完善 CloudWeGo 生态矩阵,为追求性能、安全性和最新技术的开发者、企业以及 Rustaceans 开发 RPC 微服务、搭建云原生分布式系统提供强有力的支持。
本文会为大家简单介绍 Volo 及其相关生态,并为大家提供一个简单的 Rust 与 Go 的选型建议。
01 项目缘起
其实 Volo 的创始成员来自于 Kitex 团队(CloudWeGo 开源的 Go RPC 框架),当时我们在 Go 上做了非常深度的性能优化,也因此深刻感受到了在 Go 上做性能优化所面临的阻碍。因此,我们选择了 Rust,期望能够给需求极致性能、安全和指令级掌控能力的业务一个合适的选择。而 RPC 框架是分布式系统中重要的组成部分,Volo 就这么诞生了。
02 特性
高性能
Rust 以高性能和安全著称,我们在设计和实现过程中也时刻以高性能作为我们的目标,尽可能降低每一处的开销,提升每一处实现的性能。
首先要说明,和 Go 的框架对比性能是极不公平的,因此我们不会着重比较 Volo 和 Kitex 的性能,并且我们给出的数据仅能作为参考,希望大家能够客观看待。同时,由于在开源社区并没有找到另一款成熟的 Rust 语言的 Async 版本 Thrift RPC 框架,而且性能对比总是容易引战,因此我们希望尽可能弱化性能数据的对比,仅会公布我们自己极限 QPS 的数据。在和 Kitex 相同的测试条件(限制 4C)下,Volo 极限 QPS 为 35W。同时,我们内部正在验证基于 Monoio(CloudWeGo 开源的 Rust Async Runtime)的版本,极限 QPS 可以达到 44W。从我们线上业务的火焰图来看,得益于 Rust 的静态分发和优秀的编译优化,框架部分的开销基本可以忽略不计(不包含 syscall 开销)。
基于 GAT 设计我们热爱并追随最新的技术,Volo 的核心抽象使用了 Rust 最新的 GAT 特性,在这个过程中我们也借鉴了 Tower 的设计。Tower 是一个非常优秀的抽象层设计,适用于非 GAT 的情况下。在此我们非常感谢 Tower 团队。
Tower:https://github.com/tower-rs/tower
通过 GAT,我们可以避免很多不必要的 Box 内存分配,以及提升易用性,给用户提供更友好的编程接口和更符合人体工程学的编程范式。
我们的核心抽象如下:
由于使用了 Rust 的 GAT 特性,因此我们可以解决返回异步 Future 带来的生命周期问题。同时,如果配合 type_alias_impl_trait 使用,效果更佳,比如实现 Timeout 可以使用如下方式:
易用性好
Rust 以难学难用而闻名,我们希望尽可能降低用户使用 Volo 框架以及使用 Rust 语言编写微服务的难度,提供最符合人体工程学和直觉的编码体验。因此,我们把易用性作为我们重要的目标之一。
比如,我们提供了 Volo 命令行工具,用于初始化项目以及管理 IDL。同时,我们将 Thrift 及 gRPC 拆分为两个独立(但共用一些组件)的框架,以提供最符合不同协议语义的编程范式及接口。
我们还提供了 #[service] 宏(可以理解为不需要 Box 的 async_trait)来使得用户可以无心理负担地使用异步来编写 Service 中间件。
通过这个宏,我们编写 Service 中间件可以简化到如下图:
易用性好
受益于 Rust 强大的表达和抽象能力,通过灵活的中间件 Service 抽象,开发者可以以非常统一的形式,对 RPC 元信息、请求和响应做处理。
比如,服务发现、负载均衡等服务治理功能,都可以以 Service 形式进行实现,而不需要独立实现 Trait。
相关的扩展,我们会放在 github.com/volo-rs 组织下,也欢迎大家贡献自己的扩展到 volo-rs。
03 生态系统
Volo 是 RPC 框架的名字,随着 Volo 一起开源的有以下几个项目:
Volo-rs:Volo 的相关生态。
Pilota:Volo 使用的 Thrift 与 Protobuf 编译器及编解码的纯 Rust 实现(不依赖 protoc)。
Motore:Volo 参考 Tower 设计的、使用了 GAT 和 TAIT 的 middleware 抽象层。
Metainfo:Volo 用于进行元信息透传的组件,期望定义一套元信息透传的标准。
04 选型建议
“什么情况下应该用 Rust、什么情况下应该用 Go?”这是一个非常经典的问题。在 Volo 团队看来,Rust 和 Go 并不是对立关系,而是合作关系,取长补短。
对于性能不敏感的应用、重 IO 的应用以及需要快速开发快速迭代胜过稳定性的应用,推荐使用 Go,这种应用使用 Rust 并不会带来明显的收益。
对于需要极致性能,重计算的应用,以及需要稳定性并能接受一定开发速度损失的应用,推荐使用 Rust,Rust 在极致性能优化和安全性上的优势可以在这类应用中得以发挥。当然,还有一个很重要的考虑因素,是团队现有的技术栈,即技术储备和人才储备。
05 总结
希望本文能让大家对于 Volo 及相关生态有一个基本的了解。同时,Volo 还处于早期阶段,欢迎各位感兴趣的同学一起加入,共同建设 CloudWeGo 及 Rust 开源社区,向 Volo 提交 Issue 和 PR 共建 Volo。我们诚心期待更多的开发者加入,也期待 Volo 助力越来越多的企业快速构建云原生架构。如果企业客户想内部试用,我们可以排期提供专项技术支持和交流。
参考资料
Volo 概览:
https://github.com/cloudwego/volo
Volo Tutorial:
https://www.cloudwego.io/zh/docs/volo/
Volo 文档:
https://docs.rs/volo
Volo-rs 组织:
https://github.com/volo-rs
项目地址GitHub:
https://github.com/cloudwego
官网:www.cloudwego.io
今日好文推荐在阿里达摩院搞了四年数据库,我来聊聊实际情况 | 卓越技术团队访谈录30 年 IT 老兵谈数字化:这就不是个技术活资深 Web 开发的经验之谈:为什么你开发的网页不应该大于 14KB?
TypeScript 遭库开发者嫌弃:类型简直是万恶之源
文章转发自InfoQ微信公众号,版权归其所有。文章内容不代表本站立场和任何投资暗示。
InfoQ文章
月薪 5w+,2023 懂点 K8s/Docker 真的太有必要了!| 极客时间
原美团联合创始人王慧文宣布进军 AI,出资 5000 万美元再创业,要打造“中国 OpenAI”
热门方向Top4:大前端监控、移动端性能与效率优化、团队可持续发展、低代码|GMTC 北京站圆满落幕
甲骨文Java语言架构师:虚拟线程将会深刻影响大规模Java应用的并发机制
被批不够安全, C++ 创建者压力下提出解决方案
WEB3.0相关文章
学习机迈入AI时代,近3亿学生带飞这千亿市场
MicroOLED+Pancake,这款号称世界最小最轻的系留式PC VR头显发布:仅127克
全球智能手机利润苹果独占85%,iPhone 14 Pro Max硬件成本仅3000?
盈透证券在香港推出面向专业投资客户的加密货币交易
【年度专题】一年增长近20万家相关企业,数字人从量变到“应”变
芯片代工争夺战,英特尔为何输给了“小弟”台积电?
我用 ChatGPT 写了一封情书,能感动 Ta 吗?
我的情人不是“人”
磐石元宇宙办公平台,带来线上办公新体验
必应发狂了! LeCun马库斯齐喷ChatGPT:大语言模型果然是邪路?
元宇宙概念:元宇宙一般指是一个虚拟时空间的集合,这个词通常用来描述未来互联网迭代的概念,由连接到一个可感知的虚拟宇宙的持久、共享的3D 虚拟空间组成。广义上的元宇宙不仅指虚拟世界,还指整个互联网,包括增强现实的整个范围。本站分享最新元宇宙相关资讯,内容资讯仅代表作者观点与平台立场无关,仅供参考。
联系我们
wechat:yitbcom
Email: hello@yitb.com
Address: 6890 Blvd, The Bronx, NY 1058 New York, USA
免责声明
YITB.COM的资讯页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与我们联系删除或处理。稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性,更不对您的投资构成建议。我们不鼓励任何形式的投资行为、购买使用行为。
Copyright 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM