カスタムバックエンドメトリクス

gRPCライブラリ内の仕組みにより、ユーザーはカスタムメトリクスをgRPCサーバーに注入し、gRPCクライアントで消費することで、カスタム負荷分散アルゴリズムを作成できます。

カスタムバックエンドメトリクス

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 backend metrics diagram

実装

詳細については、gRPCの提案A51を参照してください。

言語サポート

言語
JavaJavaの例
GoGoの例
C++今後の例