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

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++近日公開予定の例