分散システムにおけるリモート プロシージャ コール (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 つのプログラム コンポーネントがあります。

  1. クライアント
  2. クライアントスタブ
  3. RPC ランタイム
  4. サーバースタブ
  5. サーバー
RPC Archi構造
RPC Archi構造

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 方式の最大の欠点は、通信システム、別のマシン、別のプロセスが関与するため、障害に対して非常に脆弱であることです。