RPC(Remote Procedure Call)について超簡単まとめ
はじめに
プログラム作成課題を取り組む中で、RPC(Remote Procedure Call)というものに触れる機会があったため、RPCとは何者かについて簡単にまとめていきます。
RPCとは
日本語で「遠隔手続き呼出し」、現代の分散システムやマイクロサービスアーキテクチャの根幹を支える技術の一つとされています。
※ https://www.coingecko.com/learn/crypto-rpc-best-rpc-providers より画像引用
簡単に言えば、ネットワークで繋がれた別のコンピュータ(サーバー)上にある関数やメソッドを、まるで自分のプログラム内にあるローカルな関数のように呼び出して実行するための仕組みです。
開発者は、ネットワーク通信の詳細(ソケット、パケットのシリアライズ・デシリアライズ、アドレス指定など)を意識することなく、通常の関数呼び出しと同じ感覚でリモートの機能を利用できます。
実行の流れ
※ https://data-flair.training/blogs/remote-procedure-call-rpc-introduction/ より画像引用
1. 呼び出し (Call)
クライアントプログラムが、ローカルな関数のようにクライアントスタブのメソッドを呼び出します。
2. シリアライズ
クライアントスタブは、呼び出された関数名、引数、その他の情報を取得し、ネットワーク経由で送信できる形式(バイト列)にシリアライズします。
3. 転送
シリアライズされたデータは、TCP/IPなどのプロトコルを使ってサーバーへ送信されます。
4. デシリアライズ
サーバー側のサーバスタブがデータを受け取り、元の関数名や引数のデータ構造にデシリアライズします。
5. 実行 (Execute)
サーバスタブは、デシリアライズした情報に基づき、サーバー上の実際の関数を実行します。
6. 結果の返却
実行結果は、上記と逆のプロセス(サーバースタブ → シリアライズ → ネットワーク転送 → クライアントスタブ → デシリアライズ)を経て、最終的にクライアントプログラムへ返されます。
参考URL
Discussion