2.13.4 gRPCインバウンドアダプタの機能
gRPCインバウンドアダプタは,RPCプロトコル「gRPC」を利用するgRPCクライアントからの要求電文を受信し,gRPC受付から返される応答電文をgRPCクライアントに返信します。JCA1.5に準拠しています。
gRPCインバウンドアダプタでは,次のOSSの機能を使用できます。
-
メッセージ圧縮機能(gRPCの要求電文,応答電文の双方でメッセージ圧縮機能をサポート)
-
メタデータの送受信(gRPCの要求電文の受信,応答電文の送信,双方でメタデータをサポート)
-
SSL/TLS
-
フローコントロール
-
キープアライブ
(1) サポートするgRPC通信種別
gRPCインバウンドアダプタでは,gRPC通信種別の「Simple-RPC(Unary)」をサポートしています。「Simple-RPC(Unary)」は,gRPCクライアントからの1つのリクエストに対して,gRPCサーバが1つのレスポンスを返す通信種別です。
(2) gRPCインバウンドアダプタの流量制御
gRPCインバウンドアダプタでは,gRPCクライアントからのリクエストを受信した場合,スレッドプールからスレッドを割り当ててリクエスト処理を実行します。スレッドプールのスレッド数を指定し,同時に実行できるスレッドを制御することで,パフォーマンスの低下やリソースの枯渇を抑制できます。
threadPoolSize(リクエストを処理するスレッドプールのスレッド数)には,gRPCクライアントの同時実行数をスレッド数として設定します。
threadPoolSizeについては,マニュアル「サービスプラットフォーム システム構築・運用ガイド」の「3.1.2 実行環境に必要なソフトウェアを設定する」のthreadPoolSizeについて説明している個所を参照してください。
|
|
gRPCインバウンドアダプタでは,スレッドプールを使用し,一度作成したスレッドを再利用して処理を実行します。スレッドプール内のスレッド数は,属性ファイルから設定できます。
タスクを処理するスレッドプールのスレッド数に10を設定した場合の遷移の例を次の図に示します。
|
|
この例では,属性ファイルに次のように設定しています。
threadPoolSize=10
-
gRPCインバウンドアダプタ起動直後は,スレッドは生成されません。
-
7つのリクエストが同時に実行された場合,7つのスレッドが作成され,実行中スレッドとなります。
-
リクエスト処理の実行が完了した場合,実行が完了したスレッドはアイドルスレッドとなります。リクエスト処理が完了してもスレッドは破棄されません。
-
スレッドプールのスレッド数(threadPoolSize)を超えるリクエストが同時に実行された場合,threadPoolSizeに指定した値を超えた分のリクエスト処理要求は,実行待ちキューにタスクとして追加され,処理を待機します。実行中のスレッドの処理が終了し,スレッドに空きが発生するとキューからタスクが取り出されます。
(3) gRPCインバウンドアダプタ使用時の注意事項
gRPCインバウンドアダプタ使用時の注意事項を次に示します。
-
gRPCインバウンドアダプタがサポートするgRPC電文フォーマットの仕様はproto3以上です。proto2以前の電文フォーマットは使用できません。
-
同一完全修飾サービス名を持つ複数のgRPCサービスは登録できません。同一完全修飾サービス名を持つgRPCサービスは,先に登録されたサービスだけが有効となり,それ以外は無効となります。