分散システムにおけるリモート プロシージャ コール (RPC) プロトコル
RPCとは何ですか?
リモートプロシージャコール(RPC) プロセス間通信技術です。RPC の完全な形式は、Remote Procedure Call です。クライアント サーバー アプリケーションで使用されます。RPC メカニズムは、コンピューター プログラムが別のアドレス空間でプロシージャまたはサブルーチンを実行するときに使用されます。これは、プログラマーがリモート インタラクションの詳細を具体的にコーディングすることなく、通常のプロシージャ コールとしてコーディングされます。
このプロシージャ コールは、ユーザー データグラム プロトコルなどの低レベルのトランスポート プロトコルも管理します。 Transmission 制御プロトコル/インターネット プロトコルなど。プログラム間でメッセージ データを運ぶために使用されます。
RPC の種類
RPC には次の XNUMX 種類があります。
- コールバック RPC
- ブロードキャスト RPC
- バッチモード RPC
コールバック RPC
このタイプの RPC では、参加しているプロセス間の P2P パラダイムが可能になります。 これは、プロセスがクライアント サービスとサーバー サービスの両方になるのに役立ちます。
コールバック RPC の機能:
- リモート処理された対話型アプリケーションの問題
- クライアントハンドルを備えたサーバーを提供します
- コールバックによりクライアントプロセスが待たされる
- コールバックデッドロックを管理する
- これにより、参加するプロセス間のピアツーピア パラダイムが促進されます。
ブロードキャスト RPC
ブロードキャスト RPC はクライアントのリクエスト、つまりネットワーク上でブロードキャストされ、そのリクエストを処理するメソッドを持つすべてのサーバーによって処理されます。
ブロードキャスト RPC の機能:
- クライアントの要求メッセージをブロードキャストする必要があることを指定できます。
- ブロードキャストポートを宣言できます。
- 物理ネットワークの負荷を軽減します。
バッチモード RPC
バッチ モード RPC は、クライアント側の送信バッファーで個別の RPC 要求をキューに入れて、それらを 1 つのバッチとしてネットワーク経由でサーバーに送信するのに役立ちます。
バッチモード RPC の機能:
- リクエストを XNUMX つのバッチとしてネットワーク経由でサーバーに送信するため、リクエストの送信に伴うオーバーヘッドが最小限に抑えられます。
- このタイプの RPC プロトコルは、より低い呼び出しレートを必要とするアプリケーションに対してのみ効率的です。
- 信頼性の高い伝送プロトコルが必要です。
RPC Archi構造
RPC アーキテクチャには、主に次の 5 つのプログラム コンポーネントがあります。
- クライアント
- クライアントスタブ
- RPC ランタイム
- サーバースタブ
- サーバー
RPC はどのように機能するのでしょうか?
RPC プロセス中に次の手順が実行されます。
ステップ1) クライアント、クライアント スタブ、および RPC ランタイムの XNUMX つのインスタンスがクライアント マシン上で実行されます。
ステップ2) クライアントは、通常の方法でパラメータを渡すことによってクライアント スタブ プロセスを開始します。 クライアント スタブは、クライアント自身のアドレス空間内に格納されます。 また、ローカル RPC ランタイムにサーバー スタブに送り返すように要求します。
ステップ3) この段階では、ユーザーは通常のローカル プロシージャ カルを実行することによって RPC にアクセスします。RPC ランタイムは、クライアントとサーバー間のネットワーク間のメッセージの送信を管理します。また、再送信、確認、ルーティング、暗号化などのジョブも実行します。
ステップ4) サーバー プロシージャが完了すると、サーバー スタブに戻り、戻り値がメッセージにパック (マーシャリング) されます。 次に、サーバー スタブはメッセージをトランスポート層に送り返します。
ステップ5) このステップでは、トランスポート層は結果メッセージをクライアント トランスポート層に送り返し、クライアント トランスポート層はメッセージをクライアント スタブに返します。
ステップ6) この段階では、クライアント スタブが結果のパケット内の戻りパラメータをデマーシャル (アンパック) し、実行プロセスが呼び出し元に戻ります。
RPCの特徴
RPC の重要な特徴は次のとおりです。
- 呼び出されたプロシージャは別のプロセス内にあり、別のマシンに存在する可能性があります。
- プロセスはアドレス空間を共有しません。
- パラメータは値によってのみ渡されます。
- RPC はサーバー プロセスの環境内で実行されます。
- 呼び出し側プロシージャの環境へのアクセスは提供されません。
RPCの特徴
RPC の重要な機能は次のとおりです。
- 単純な呼び出し構文
- 既知のセマンティクスを提供します
- 明確に定義されたインターフェースを提供する
- 同じマシンまたは異なるマシン上のプロセス間で通信できます
RPC の利点
RPC の長所と利点は次のとおりです。
- RPC メソッドは、高級言語でのプロシージャ コールを従来どおり使用して、クライアントがサーバーと通信するのに役立ちます。
- RPC メソッドはローカル プロシージャ呼び出しに基づいてモデル化されていますが、呼び出されるプロシージャは別のプロセス、通常は別のコンピュータで実行される可能性が最も高くなります。
- RPC はプロセス指向モデルとスレッド指向モデルをサポートします。
- RPC は、内部メッセージ受け渡しメカニズムをユーザーから隠蔽します。
- コードの書き直しと再開発に必要な労力は最小限で済みます。
- リモート プロシージャ コールは、分散環境およびローカル環境の目的で使用できます。
- パフォーマンスを向上させるためにプロトコル層の多くをコミットします。
- RPC は抽象化を提供します。 たとえば、ネットワーク通信のメッセージ パッシングの性質はユーザーには隠されたままです。
- RPC を使用すると、ローカル環境だけでなく分散環境でもアプリケーションを使用できます。
- RPC コードを使用すると、書き直しや再開発の労力が最小限に抑えられます。
- RPC によるプロセス指向モデルとスレッド指向モデルのサポート。
RPCのデメリット
RPC を使用する場合の短所と欠点は次のとおりです。
- リモート プロシージャ コールは値とポインタ値のみによってパラメータを渡しますが、これは許可されていません。
- リモート プロシージャの呼び出し (および戻り) 時間 (つまり、オーバーヘッド) は、ローカル プロシージャの場合よりも大幅に短縮できます。
- このメカニズムには通信システム、別のマシン、別のプロセスが関与するため、障害に対して非常に脆弱です。
- RPC の概念はさまざまな方法で実装できますが、これは標準ではありません。
- RPC は主にインタラクションベースであるため、ハードウェア アーキテクチャの柔軟性は提供されません。
- リモート プロシージャ コールによりプロセスのコストが増加します。
製品概要
- リモート プロシージャ コールは、 プロセス間通信 技術。
- RPC には、1) コールバック RPC、2) ブロードキャスト RPC、3) バッチモード RPC の XNUMX 種類があります。
- RPCアーキテクチャは、主に1つのプログラムコンポーネントで構成されています。2)クライアント3)クライアントスタブ4)RPCランタイム5)サーバースタブ、XNUMX)サーバー
- RPC 方式では、プロセスはアドレス空間を共有しません。
- RPC はシンプルな呼び出し構文と既知のセマンティクスを提供します
- RPC メソッドは、高級言語でのプロシージャ コールを従来どおり使用して、クライアントがサーバーと通信するのに役立ちます。
- RPC 方式の最大の欠点は、通信システム、別のマシン、別のプロセスが関与するため、障害に対して非常に脆弱であることです。