分散システムにおけるリモート プロシージャ コール (RPC) プロトコル
⚡ スマートサマリー
リモートプロシージャコール(RPC)は、プロセス間通信プロトコルであり、分散クライアント/サーバシステムにおいて、通常のローカル関数呼び出しの背後にネットワークの詳細を隠蔽することで、プログラムが別のアドレス空間またはマシンでプロシージャを実行できるようにするものです。

RPCとは何ですか?
リモートプロシージャコール(RPC) あります プロセス間通信 クライアント/サーバーアプリケーションで使用される技術。RPCはRemote Procedure Callの略です。RPCメカニズムは、コンピュータプログラムが異なるアドレス空間でプロシージャまたはサブルーチンを実行する場合に使用されます。これは、プログラマがリモートインタラクションの詳細を明示的にコーディングすることなく、通常のプロシージャコールとしてコーディングされます。
このプロシージャ呼び出しは、UDPやTCP/IPなどの低レベルのトランスポートプロトコルも管理し、プログラム間でメッセージデータを転送します。
RPC の種類
RPC には次の XNUMX 種類があります。
- コールバック RPC
- ブロードキャスト RPC
- バッチモード RPC
コールバック RPC
このタイプのRPCは、参加するプロセス間でピアツーピア(P2P)パラダイムを実現します。これにより、プロセスはクライアントとサーバーの両方の役割を担うことができます。
コールバック RPC の機能:
- リモートで処理される対話型アプリケーションの問題を処理します。
- サーバーにクライアントのハンドルを提供します。
- コールバックはクライアントプロセスを待機させる。
- コールバックのデッドロックを管理します。
- これは、参加するプロセス間でのピアツーピアのパラダイムを促進する。
ブロードキャスト RPC
ブロードキャストRPCとは、クライアントからのリクエストがネットワーク上にブロードキャストされ、そのリクエストを処理するメソッドを持つすべてのサーバーによって処理される仕組みです。
ブロードキャスト RPC の機能:
- クライアントのリクエストメッセージをブロードキャストする必要があることを指定できます。
- ブロードキャストポートを宣言できます。
- これは物理ネットワークへの負荷を軽減するのに役立ちます。
バッチモード RPC
バッチモードRPCは、クライアント側の送信バッファに個別のRPCリクエストをキューイングし、それらをまとめてネットワーク経由でサーバーに送信するのに役立ちます。
バッチモードRPCの機能:
- リクエストをネットワーク経由でサーバーに一括送信するため、リクエスト送信に伴うオーバーヘッドを最小限に抑えることができます。
- このタイプのRPCプロトコルは、呼び出し頻度が低いアプリケーションにのみ効率的です。
- 信頼性の高い伝送プロトコルが必要です。
RPC Archi構造
RPC アーキテクチャには、主に次の 5 つのプログラム コンポーネントがあります。
- クライアント
- クライアントスタブ
- RPC ランタイム
- サーバースタブ
- サーバー
RPC Archi構造
RPC はどのように機能するのでしょうか?
RPC処理では、以下の手順が実行されます。
ステップ1) クライアント、クライアントスタブ、およびRPCランタイムのインスタンスが1つ、クライアントマシン上で実行されます。
ステップ2) クライアントは、通常の方法でパラメータを渡すことにより、クライアントスタブプロセスを開始します。クライアントスタブは、クライアント自身のアドレス空間内に格納されます。また、ローカルのRPCランタイムに対し、リクエストをサーバースタブに送信するよう要求します。
ステップ3) この段階では、ユーザーは通常のローカルプロシージャコールを行うことでRPCにアクセスします。RPCランタイムは、ネットワークを介したクライアントとサーバー間のメッセージ送信を管理します。また、再送信、確認応答、ルーティング、暗号化といった処理も実行します。
ステップ4) サーバー処理が完了すると、実行はサーバースタブに戻り、サーバースタブは戻り値をメッセージにパック(マーシャリング)します。その後、サーバースタブはそのメッセージをトランスポート層に送信します。
ステップ5) このステップでは、トランスポート層が結果メッセージをクライアントトランスポート層に送り返し、クライアントトランスポート層はメッセージをクライアントスタブに返します。
ステップ6) この段階では、クライアントスタブが結果パケット内の戻りパラメータをデマーシャリング(展開)し、実行は呼び出し元に戻ります。
RPCの特徴
RPC の重要な特徴は次のとおりです。
- 呼び出されたプロシージャは別のプロセス内で実行されており、そのプロセスは別のマシン上に存在している可能性が高い。
- プロセスはアドレス空間を共有しません。
- パラメータは値によってのみ渡されます。
- RPC はサーバー プロセスの環境内で実行されます。
- 呼び出し元のプロシージャの環境へのアクセスは提供されません。
RPCの特徴
RPC の重要な機能は次のとおりです。
- シンプルな呼び出し構文。
- 既知の意味論を提供します。
- 明確に定義されたインターフェースを提供する。
- 同一マシン上または異なるマシン上のプロセス間で通信を行うことができます。
RPC の利点
RPCのメリット/利点は以下のとおりです。
- RPCは、高級言語における従来の手続き呼び出しを用いることで、クライアントとサーバー間の通信を支援する。
- RPCはローカルプロシージャコールをモデルにしているが、呼び出されるプロシージャは別のプロセスで、通常は別のコンピュータ上で実行される。
- RPCは、プロセス指向モデルとスレッド指向モデルの両方をサポートしています。
- RPCは、内部のメッセージ伝達メカニズムをユーザーから隠蔽する。
- パフォーマンスを向上させるためにプロトコル層の多くをコミットします。
- RPCは絶対的な権利を提供するtrac例えば、ネットワーク通信のメッセージ伝達という性質は、ユーザーには隠されたままです。
- RPCは分散環境とローカル環境の両方で使用できます。
- コードの書き換えと再開発に必要な労力は最小限です。
RPCのデメリット
RPC を使用する場合の短所と欠点は次のとおりです。
- リモートプロシージャコールでは、パラメータは値のみで渡されます。ポインタ(参照)値は許可されていません。
- リモートプロシージャコール(および戻り)にかかる時間、つまりオーバーヘッドは、ローカルプロシージャの場合よりも大幅に長くなります。
- この仕組みは、通信システム、別の機械、そして別のプロセスが関わるため、故障しやすい。
- RPCの概念は様々な方法で実装できるため、単一の標準規格は存在しない。
- 主にインタラクションに基づいているため、ハードウェアアーキテクチャの柔軟性には欠ける。
- リモートプロシージャコールが発生するため、処理コストが増加します。

