Skip to content

Latest commit

 

History

History
131 lines (82 loc) · 8.5 KB

README-ja.md

File metadata and controls

131 lines (82 loc) · 8.5 KB
Volo

Crates.io Documentation Website License Build Status

English | 中文 | 日本語

Voloは、開発者がマイクロサービスを構築するのを支援する高性能強力な拡張性を持つRust RPCフレームワークです。

Voloは、AFITとRPITITによって強化されたミドルウェア抽象としてMotoreを使用します。

概要

クレート

Voloは主に6つのクレートで構成されています:

  1. フレームワークの共通コンポーネントを含むvoloクレート。
  2. Thrift RPC実装を提供するvolo-thriftクレート。
  3. gRPC実装を提供するvolo-grpcクレート。
  4. HTTP実装を提供するvolo-httpクレート。
  5. ThriftおよびProtobufコードを生成するvolo-buildクレート。
  6. 新しいプロジェクトをブートストラップし、IDLファイルを管理するCLIインターフェースを提供するvolo-cliクレート。
  7. フレームワークのマクロを提供するvolo-macrosクレート。

特徴

AFITとRPITITによって強化

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ファイルを参照してください。

コミュニティ