プログラミングや低レイヤで遊ぶ人

基本的には遊んだことを記事にしていく

golangでRPCをやる

 

2021-1-7 @jumdtw
01そもそもRPCってなんぞや
そもそもRPCがよくわかってない。Wiki先輩いわく、 Remote procedure call 遠隔手続き呼出し(RPC、リモートプロシージャコール)のこと。 らしい。
e-Wordsさんでは、RPCとは、あるコンピュータで動作するソフトウェアから、 通信回線やコンピュータネットワークを通じて別のコンピュータ上で動作するソフトウェアへ処理を依頼したり、結果を返したりするための規約。と言っている。
要するに、ローカルで処理する代わりにサーバー使って処理を行うためのプロトコルらしい。これ何に使うの?って思ったが、Wikiを読んでみると、元々は 分散コンピューティングのために使われてたっぽい?現代ではどのように使うのかはよくわからなかった。
02RPCをやる
rpcパッケージの使い方はこちらに書いてあった。 逆にこれ以外に記事がそこまで見つからなかった。
ちなみに、RPCのうちJSONを利用したJSON-RPCというものがあるらしい。 こちらもGolangで使用可能とのことで調べたがよくわからなかった。 というかrpcパッケージ自体がもう新しい機能を受け付けていないらしい。やっぱりもう誰も使わないのかな?
03うごかしてゆく~
以下のようなコードを書いた。また、実行結果も以下に示す。ほとんど先ほどのリンクの引用であるが
mario
遠隔で実行させる関数の定義とそれらに使用する変数の定義
mario
serverの起動とクライアントからのリクエスト処理を行っているmain関数
mario
実行結果
無事想定した結果がかえってきた。だがもちろんサーバーを経由してる分実行が遅いわけでこんな簡単な計算をサーバーに経由しても無意味。 あと、このコード書いててやっと理解したのだが、これクライアント側で定義した関数実行している。てっきり、サーバーにおいてある関数を実行するもんだと思ってた。 WEB APIはこれの部類に入るのか????
参考文献
・GOでわかるシステムプログラミング