概览
CloudWeGo-Volo
Volo-HTTP 是 Rust 语言的 HTTP 微服务框架, 使用了基于 AFIT 和 RPITIT 实现的 Motore 作为中间件抽象层,并结合字节跳动内部的需求, 使其具有高易用性、高性能、高扩展性的特点,使用 Volo-HTTP,可以快速开发一个基于 HTTP 协议的微服务。
框架特点
高性能
Rust 以高性能和安全著称,我们在设计和实现过程中也时刻以高性能作为我们的目标,尽可能降低每一处的开销,提升每一处实现的性能。
易用性好
Rust 以难学难用而闻名,我们希望尽可能降低用户使用 Volo-HTTP 框架以及使用 Rust 语言编写微服务的难度,
提供最符合人体工程学和直觉的编码体验。因此,我们把易用性作为我们最重要的目标之一。
比如,我们提供了 volo 命令行工具,用于初始化 HTTP 项目脚手架;
用户可在 handler 中请求参数任意添加 实现了 Extractor trait
的类型来按需使用,同时用户也可以将任意实现了 IntoResponse
的类型作为 handler 返回
Volo-HTTP 已经为绝大部分内置类型实现了以上 trait,因此用户只需专注 handler 内部的业务逻辑编写即可。
我们还提供了基于 layer 模型下的中间件机制,用户可调用 route
的 layer
方法轻松使用中间件。
扩展性强
Volo-HTTP 使用 Motore
作为其中间件抽象层, Motore
基于 AFIT 和 RPITIT 设计。
通过 RPITIT,我们可以避免很多不必要的 Box 内存分配,以及提升易用性,给用户提供更友好的编程接口和更符合人体工程学的编程范式。
收益于 Rust 强大的表达和抽象能力,通过灵活的中间件 Service 抽象,开发者可以以非常统一的形式,对 HTTP 请求和响应做处理。
比如,服务发现、负载均衡等服务治理功能,都可以以 Service 形式进行实现,而不需要独立实现 Trait。
相关的扩展,我们会放在 volo-rs 组织下,也欢迎大家贡献自己的扩展到 volo-rs
。
相关项目
- Volo-rs:Volo 生态下的组件集合
- Pilota:使用纯血 rust 实现的 Thrift 和 Protobuf 高性能序列化组件
- Motore:基于 AFIT 和 RPITIT 特性实现的中间件抽象层
- Metainfo:组件间的元数据透传