サービス設定
サービス所有者がサービス設定を使用してクライアントの動作を制御する方法。
サービス設定
概要
サービス設定は、gRPCクライアントがgRPCサーバーとやり取りするときの動作を指定します。サービス所有者は、すべてのサービスクライアントの期待される動作を含むサービス設定を提供できます。サービス設定の設定は、常に特定のターゲット文字列(例:「api.myapp.com」)に適用され、グローバルには適用されません。
サービス設定によって制御される動作
サービス設定の設定は、クライアント側のロードバランシング、呼び出し動作、およびヘルスチェックに影響します。
このページでは、サービス設定のオプションについて概説していますが、完全なサービス設定データ構造は、protobuf定義で文書化されています。
ロードバランシング
サービスは複数のサーバーで構成され、ロードバランシング設定は、クライアントからの呼び出しをこれらのサーバー間でどのように分散するかを指定します。デフォルトでは、pick_first
ロードバランシングポリシーが使用されますが、サービス設定で別のポリシーを指定できます。たとえば、round_robin
ポリシーを指定すると、クライアントは最初のサーバーを繰り返し使用せずに、サーバーをローテーションします。
呼び出し動作
RPCはさまざまな方法で構成できます。
- wait-for-readyが有効になっている場合、クライアントがバックエンドに接続できないと、RPCはすぐに失敗する代わりに遅延されます。
- 呼び出しのタイムアウトを指定して、RPCを諦める前にクライアントが待つ最大時間を示すことができます。
- 以下のいずれか
注記
これらの呼び出し動作の設定は、個々のサービスまたはメソッドに制限できます。
リトライとヘッジングポリシーは、*リトライスロットリングポリシー*を設定することでさらに調整できますが、これはすべてのサービスとメソッドに適用されます。
ヘルスチェック
クライアントは、ヘルスチェック名を指定することで、ヘルスチェックを実行するように構成できます。クライアントは、標準のgRPCヘルスチェックサービスを使用します。
サービス設定の取得
サービス設定は、名前解決によって、またはクライアントアプリケーションによってプログラム的にクライアントに提供できます。
名前解決
gRPCの名前解決メカニズムでは、プラグ可能な名前解決実装が可能です。これらの実装は、名前と関連付けられたサービス設定と共に、名前と関連付けられたアドレスを返します。これは、サービス所有者がサービス設定をgRPCクライアントのフリートに配布するために使用できるメカニズムです。
- xDS名前解決器は、コントロールプレーンから受信したxDS構成を対応するサービス設定に変換します。
- Go実装の標準DNS名前解決器は、名前サーバー上のTXTレコードに格納されたサービス設定をサポートしています。
注記
サービス設定構造はprotobuf定義で文書化されていますが、クライアントの内部表現はJSONです。名前解決実装は、名前解決時にJSON形式で提供する限り、サービス設定情報を任意の方法で保存できます。プログラムによる設定
gRPCクライアントAPIは、JSON形式でサービス設定を指定する方法を提供します。これは、名前解決がサービス設定を提供しない場合に使用されるデフォルトのサービス設定を提供するために使用されます。いくつかのテスト状況でも役立ちます。
サービス設定の例
以下の例は、次のことを行います。
round_robin
ロードバランシングポリシーを有効にします。- すべてのサービスのすべてのメソッドに適用される1秒のデフォルトの呼び出しタイムアウトを設定します。
foo
サービスのbar
メソッドとbaz
サービスのすべてのメソッドのタイムアウトを2秒に上書きします。
{
"loadBalancingConfig": [ { "round_robin": {} } ],
"methodConfig": [
{
"name": [{}],
"timeout": "1s"
},
{
"name": [
{ "service": "foo", "method": "bar" },
{ "service": "baz" }
],
"timeout": "2s"
}
]
}