Voloは、開発者がマイクロサービスを構築するのを支援する高性能で強力な拡張性を持つRust RPCフレームワークです。
Voloは、AFITとRPITITによって強化されたミドルウェア抽象としてMotore
を使用します。
Voloは主に6つのクレートで構成されています:
- フレームワークの共通コンポーネントを含む
volo
クレート。 - Thrift RPC実装を提供する
volo-thrift
クレート。 - gRPC実装を提供する
volo-grpc
クレート。 - HTTP実装を提供する
volo-http
クレート。 - ThriftおよびProtobufコードを生成する
volo-build
クレート。 - 新しいプロジェクトをブートストラップし、IDLファイルを管理するCLIインターフェースを提供する
volo-cli
クレート。 - フレームワークのマクロを提供する
volo-macros
クレート。
Voloは、AFITとRPITITによって強化されたミドルウェア抽象としてMotore
を使用します。
RPITITを通じて、多くの不要なBox
メモリアロケーションを回避し、使いやすさを向上させ、ユーザーによりフレンドリーなプログラミングインターフェースとより人間工学に基づいたプログラミングパラダイムを提供します。
Rustはその高性能と安全性で知られています。私たちは設計と実装の過程で常に高性能を目標とし、各場所のオーバーヘッドを可能な限り削減し、各実装のパフォーマンスを向上させます。
まず第一に、Goフレームワークとの性能比較は非常に不公平であるため、VoloとKitexの性能を比較することには重点を置きません。私たちが提供するデータは参考程度にしかなりませんので、皆さんが客観的に見ることを願っています。同時に、オープンソースコミュニティでは他の成熟したRust非同期バージョンのThrift RPCフレームワークが見つからなかったため、性能データの比較をできるだけ弱めたいと考えています。私たちは自分たちのQPSデータのみを公開します。
Kitexと同じテスト条件(4Cに制限)で、VoloのQPSは350kです。同時に、Monoio(CloudWeGoのオープンソースRust非同期ランタイム)に基づくバージョンを内部で検証しており、QPSは440kに達することができます。
私たちのオンラインビジネスのフレームグラフから、Rustの静的分散と優れたコンパイル最適化のおかげで、フレームワーク部分のオーバーヘッドは基本的に無視できることがわかります(syscallオーバーヘッドを除く)。
Rustは学びにくく使いにくいことで知られています。私たちは、ユーザーがVoloフレームワークを使用し、Rust言語でマイクロサービスを記述することをできるだけ簡単にし、最も人間工学的で直感的なコーディング体験を提供したいと考えています。したがって、使いやすさを最も重要な目標の1つとしています。
たとえば、プロジェクトのブートストラップとIDLファイルの管理のためのvoloコマンドラインツールを提供しています。同時に、ThriftとgRPCを2つの独立した(ただし一部のコンポーネントを共有する)フレームワークに分割し、異なるプロトコルのセマンティクスとインターフェースに最も適したプログラミングパラダイムを提供します。
また、#[service]
マクロ(Box
を必要としないasync_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: 作業中
Examplesを参照してください。
- Volo-rs: 多くの有用なコンポーネントを含むVoloエコシステム。
- Motore: AFITとRPITITによって強化されたミドルウェア抽象層。
- Pilota: 高性能で拡張性のある純粋なRustによるThriftおよびProtobufの実装。
- Metainfo: コンポーネント間でメタ情報を伝達する。
詳細については、ROADMAP.mdを参照してください。
詳細については、CONTRIBUTING.mdを参照してください。
VoloはMITライセンスとApache License(バージョン2.0)のデュアルライセンスです。
詳細については、LICENSE-MITおよびLICENSE-APACHEを参照してください。
いくつかのサードパーティコンポーネントを使用しており、その作業に感謝します。
完全なリストについては、CREDITS.mdファイルを参照してください。
-
Email: [email protected]
-
メンバーになる方法: COMMUNITY MEMBERSHIP
-
Issues: Issues
-
Feishu: FeishuでQRコードをスキャンするか、このリンクをクリックしてCloudWeGo Voloユーザーグループに参加してください。