浅学RPC

RPC (Remote Procedure Call Protocol) はリモート プロシージャ コール プロトコルであり、呼び出しの詳細を意識することなく、ローカル サービスを呼び出すようにリモート サービスを呼び出すことができます。テキスト形式はバイナリで、ネットワーク プロトコルは TCP/HTTP/HTTP2 です。

RPC はプロトコルであり、代表的な RPC フレームワークには、Dubbo、Thrift、GPRC、Hetty などがあります。

RPC の主な役割:

  • RPC サーバー: プロバイダー、サービスを公開するサービスプロバイダー
  • RPC クライアント: コンシューマ、リモート サービスを呼び出すサービス コンシューマ
  • レジストリ: サービスの登録と検出のための登録センター、サービス登録センター

RPC 実装の鍵:

コール ID マッピング: どの関数を登録センターに呼び出す必要があるか。すべての関数は、リモートで呼び出すときにクライアントに付加される独自の一意の ID を持つ必要があり、関数とコール ID の間の対応するテーブルが必要です。

シリアル化と逆シリアル化: クライアントとサーバーの間でパラメーターを渡す問題。

データ ネットワーク送信: リモート通話機会ネットワーク接続、データ ニーズ ネットワーク送信、GPRC の場合は HTTP2、Java の場合は Netty。

RPC の主なコンポーネント:

  • クライアント (クライアント)、サービスの呼び出し元。
  • クライアント スタブはサーバーのアドレス情報を格納し、クライアントの要求パラメーターをネットワーク メッセージにパックして、ネットワークを介してリモートのサーバーに送信します。
  • サーバー (サーバー)、実際のサービスプロバイダー。
  • サーバー スタブ (サーバー スタブ) は、クライアントから送信されたメッセージを受信し、メッセージを解凍し、ローカル メソッドを呼び出します。
  • 基盤となるネットワーク トランスポート (ネットワーク サービス) (TCP または HTTP)

RPCフレームワーク呼び出し処理

  1. クライアントクライアントは、ローカルに呼び出すことによってリモート インターフェイス サービスを呼び出します。
  2. 通話を受信した後、クライアント スタブは通話情報オブジェクトをシリアル化し、ネットワーク送信用のバイナリ メッセージ本文に組み立てます。
  3. クライアントクライアントは、ソケットを介してリモートサーバーにメッセージを送信します。
  4. サーバー スタブはメッセージを受信すると、ネットワーク情報オブジェクトを逆シリアル化してデコードします。
  5. サーバー スタブは、デコード結果に従ってサーバーのローカル インターフェイス サービスを呼び出します。
  6. ローカルインタフェースサービスが実行され、処理結果がサーバスタブに返されます。
  7. サーバー スタブ サーバー スタブは、返された結果オブジェクトをシリアル化し、それをメッセージ本文に組み立てます。
  8. 次に、サーバーはソケットを通じてメッセージをクライアントに送信します。
  9. 結果メッセージを受信した後、クライアント スタブはネットワーク情報オブジェクトをシリアル化してデコードします。
  10. クライアントクライアントは、最終的なインターフェイス処理結果を取得します。

おすすめ

転載: blog.csdn.net/Xu_programmer/article/details/124397218
RPC