カスタムバックエンドメトリクス
gRPCライブラリ内の仕組みにより、ユーザーはカスタムメトリクスをgRPCサーバーに注入し、gRPCクライアントで消費することで、カスタム負荷分散アルゴリズムを作成できます。
カスタムバックエンドメトリクス
概要
単純な負荷分散の決定は、バックエンドの負荷(例:CPU)のローカルまたはグローバルな知識を考慮して行われます。より洗練された負荷分散の決定は、アプリケーション固有の知識(例:キューの深さ)を利用したり、複数のメトリクスを組み合わせたりすることで可能です。
カスタムバックエンドメトリクス機能は、LBポリシーにメトリクスフィードバックを実装できるようにAPIを公開します。
ユースケース
この機能は主に、カスタムLBポリシーを使用してバックエンドサーバーのリストによりインテリジェントにトラフィックをルーティングし、ルーティングパフォーマンスを向上させる高度なユースケース向けです。例:重み付きラウンドロビンLBポリシー。
gRPCでは従来、ユーザーが独自の負荷分散ポリシーをプラグインとして利用できます。詳細はガイドを参照してください。xDSユーザーの場合、カスタムロードバランサーを構成してカスタムLBポリシーを選択できます。
メトリクスレポート
Open Request Cost Aggregation(ORCA)は、バックエンドメトリクス情報を伝達するためのオープンスタンダードです。gRPCはORCAサービスとメトリクスの標準を使用し、2つのメトリクスレポートメカニズムをサポートしています。
クエリごとのメトリクスレポート:バックエンドサーバーは、対応するRPCが終了したときに、挿入されたカスタムメトリクスをトレーリングメタデータに添付します。これは通常、単項呼び出しのような短いRPCに役立ちます。
帯域外メトリクスレポート:バックエンドサーバーは、CPUやメモリ使用率などのメトリクスデータをクライアントに定期的にプッシュします。これは、単項呼び出し、ストリーミング呼び出しでの長時間のRPC、またはRPCがない場合など、すべての状況に役立ちます。ただし、帯域外メトリクスレポートはクエリコストメトリクスを送信しません。メトリクスの発行頻度はユーザーが設定可能であり、この設定はカスタム負荷分散ポリシーにあります。
この図は、ユーザーがバックエンドメトリクスフィードバックを実装する独自のLBポリシーを作成するアーキテクチャを示しています。
実装
詳細については、gRPCの提案A51を参照してください。
言語サポート
| 言語 | 例 |
|---|---|
| Java | Javaの例 |
| Go | Goの例 |
| C++ | 今後の例 |