#rpc-framework #rpc #grpc #thrift #protobuf #async

volo

Volo 是一个高性能且具有强大扩展性的 Rust RPC 框架,帮助开发者构建微服务。

21 个版本

0.10.2 2024 年 8 月 19 日
0.10.1 2024 年 6 月 11 日
0.10.0 2024 年 4 月 7 日
0.9.0 2023 年 12 月 22 日
0.0.0 2022 年 5 月 11 日

181网络编程

Download history 1263/week @ 2024-04-29 3025/week @ 2024-05-06 2785/week @ 2024-05-13 2428/week @ 2024-05-20 2015/week @ 2024-05-27 2327/week @ 2024-06-03 2129/week @ 2024-06-10 1778/week @ 2024-06-17 2437/week @ 2024-06-24 2637/week @ 2024-07-01 2884/week @ 2024-07-08 1846/week @ 2024-07-15 2482/week @ 2024-07-22 2287/week @ 2024-07-29 2329/week @ 2024-08-05 2071/week @ 2024-08-12

每月下载量 9,321
12 个 crate 中使用 (9 个直接使用)

MIT/Apache

150KB
3.5K SLoC

Volo

Crates.io Documentation Website License Build Status

英文 | 中文 | 日本語

Volo 是一个 高性能强扩展性 的 Rust RPC 框架,帮助开发者构建微服务。

Volo 使用 Motore 作为其中间件抽象,由 AFIT 和 RPITIT 提供。

概述

crate

Volo 主要由六个 crate 组成

  1. volo crate,其中包含框架的公共组件。
  2. volo-thrift crate,提供 Thrift RPC 实现。
  3. volo-grpc crate,提供 gRPC 实现。
  4. volo-http crate,提供 HTTP 实现。
  5. volo-build crate,生成 thrift 和 protobuf 代码。
  6. volo-cli crate,提供 CLI 界面以启动新项目并管理 idl 文件。
  7. volo-macros crate,提供框架的宏。

功能

由 AFIT 和 RPITIT 提供支持

Volo 使用 Motore 作为其中间件抽象,由 AFIT 和 RPITIT 提供。

通过 RPITIT,我们可以避免许多不必要的 Box 内存分配,提高易用性,并为用户提供更友好的编程接口和更人性化的编程范式。

高性能

Rust以其高性能和安全著称。我们在设计和实现过程中始终以高性能为目标,尽可能减少每个地方的开销,并提高每个实现的性能。

首先,将性能与Go框架进行比较是非常不公平的,所以我们不会专注于比较Volo和Kitex的性能,我们给出的数据只能作为参考,希望每个人都能客观地看待它;同时,由于开源社区尚未找到另一个成熟的Rust异步版本的Thrift RPC框架,性能比较很容易引发争论,所以我们希望尽可能弱化性能数据的比较,我们只发布我们自己的QPS数据。

在Kitex相同的测试条件下(限于4C),Volo的QPS为350k;同时,我们正在内部验证基于Monoio(CloudWeGo的开源Rust异步运行时)的版本,QPS可以达到440k。

从我们在线业务的火焰图中可以看出,得益于Rust的静态分布和卓越的编译优化,框架部分的开销基本上可以忽略不计(不包括系统调用开销)。

易于使用

Rust以其难以学习和使用而著称,我们希望尽可能让用户易于使用Volo框架并以Rust语言编写微服务,提供尽可能直观和便捷的编码体验。因此,我们将易用性作为我们最重要的目标之一。

例如,我们提供了volo命令行工具,用于启动项目和管理工作IDL文件;同时,我们将thrift和gRPC拆分为两个独立(但共享一些组件)的框架,以提供最符合不同协议语义和接口的编程范式。

我们还提供了一个#[service]宏(可以理解为不需要Boxasync_trait),使用户能够无心理负担地使用异步Rust编写服务中间件。

强大的可扩展性

得益于Rust强大的表达式和抽象能力,通过灵活的中间件Service抽象,开发者可以以非常统一的形式处理RPC元信息、请求和响应。

例如,可以实现如服务发现和负载均衡等服务治理功能,而无需独立实现Trait。

我们已创建了一个组织Volo-rs,任何贡献都受欢迎。

更多信息,请参阅我们的指南

教程

Volo-Thrift: https://www.cloudwego.io/zh/docs/volo/volo-thrift/getting-started/

Volo-gRPC: https://www.cloudwego.io/zh/docs/volo/volo-grpc/getting-started/

Volo-HTTP: 正在开发中

示例

示例

  • Volo-rs: 包含许多有用组件的volo生态系统。
  • Motore: 由AFIT和RPITIT支持的中间件抽象层。
  • Pilota: 以高性能和可扩展性为特点的纯Rust Thrift和protobuf实现。
  • Metainfo: 在组件间传递元信息。

路线图

请参阅ROADMAP.md获取更多信息。

贡献

请参阅CONTRIBUTING.md获取更多信息。

许可证

Volo采用MIT许可证和Apache许可证(版本2.0)的双重许可。

有关详细信息,请参阅LICENSE-MITLICENSE-APACHE

致谢

我们使用了某些第三方组件,并感谢他们的工作。

有关完整列表,您可以参考CREDITS.md文件。

社区

依赖

~9–22MB
~322K SLoC