Hadoop RPCの概要

コンセプト

1. RPCの完全な名前はリモートプロシージャコール(リモートプロシージャコール)であり、プロセス間通信方式です
。2。プログラムを使用せずに、プログラムが別のアドレス空間(通常はネットワークを共有する別のマシン)のプロシージャまたは関数を呼び出すことができますプログラマーは、このリモート呼び出しの詳細を明示的にコーディングします。つまり、プログラマーがローカルとリモートのどちらを呼び出す場合でも、基本的に書かれた呼び出しコードは基本的に同じです。

起源

1.ブルースネルソンは、1974年にハーベイマッドカレッジを卒業し、1976年にスタンフォード大学でコンピューターサイエンスの修士号を取得
ました。1982年にカーネギーメロン大学でコンピューターサイエンスの博士号を取得しています。リモートプロシージャコール(RPC)
3. の概念を開発しました。彼と彼の共同作業者であるAndrew Burrellは、RPCに関する研究で1994 ACM Software System Awardを受賞し
、1996年にシスコシステムズに最高科学責任者として参加しました。

特徴

1.シンプル:RPCコンセプトのセマンティクスは非常に明確でシンプルなので、分散コンピューティングを確立するのが簡単
です。2.効率的:プロシージャコールは非常にシンプルで効率的で
多用途に見えます:スタンドアロンコンピューティングでは、プロセスは多くの場合、異なるアルゴリズムパーツ間の最も重要な通信ですメカニズム。簡単に言えば、通常のプログラマはローカルプロシージャコールに慣れているため、ネットワークを介してリモート通信を行う場合、RPCを介したローカルコールとまったく同じようにリモートコールを行うと、受け入れや使用が簡単になります。障害物はありません。

RPCアーキテクチャ

1.ユーザー(ユーザー)
2.ユーザースタブ(ユーザースタブ)
3. RPC通信パッケージ(RPCRuntimeと呼ばれる)
4.サーバースタブ(サーバースタブ)
サーバー(サーバー)
クライアント(クライアント)

基本的なプロセス

1.サービスコンシューマー(ユーザー)は、ローカルでサービスを呼び出してサービスを呼び出し
ます。2。呼び出しを受け取った後、ユーザースタブは、メソッドやパラメーターなどをメッセージ本文に組み立て、ネットワーク経由で送信してRPCRuntimeモジュールに渡します
。 RPCRuntimeはサービスアドレスを見つけ、メッセージをサーバーに送信します
。4. メッセージを受信した後、サーバーのRPCRuntimeはそれをサーバースタブに渡します
。5.サーバースタブは、デコード結果に基づいてローカルサービスを呼び出します。6
.ローカルサービスが実行され、サーバーに結果を返します。 -stub
7.サーバースタブは返された結果をメッセージにパッケージ化し、コンシューマーに送信します。8 .
クライアントスタブはメッセージを受信し、
サービスをデコードして最終結果を取得します。

RPC呼び出しの詳細

1.インターフェース呼び出し:RPC設計の目的は、呼び出し元がローカル呼び出しのようにリモートサービスを呼び出せるようにすることです。具体的な実装方法は、インターフェースを呼び出すことです。Javaでは、最下層がJava動的プロキシを介してインターフェースのプロキシクラスを生成します。プロキシクラスは、リモートサービスとの通信の詳細をカプセル化します:
  a。クライアントのリクエストメッセージ:
    i。インターフェース名
    ii。メソッド名
    iii。パラメータタイプと対応パラメータ値
    iv。一意の要求IDを識別するRequestID
  b。サーバーからの戻りメッセージ:
    i。戻り値
    ii。RequestID
2.シリアル
通信:一般的なRPC通信はNIO通信に基づいています

RPCフレームワークの機能

1. RPCベースのプロセス通信方式
2.シリアル化および逆シリアル化メカニズムのカスタマイズされたセットがあります。3
.クライアントがプロキシメカニズムを介してリモートメソッドを呼び出し、
サーバーがメソッドを実行して、コールバックメカニズムを介して結果を返します。

人気のRPCフレームワーク

dubbo:AlibabaのオープンソースJava高性能の優れたサービスフレームワーク。これにより、アプリケーションは高性能RPCを介してサービスの出力および入力機能を実装でき、Springフレームワークとシームレスに統合できます。

motan:Sina Weiboによってオープンソース化されたJavaフレームワーク。2013年に始まって比較的遅く、2016年5月にオープンソースで誕生しました。MotanはWeiboプラットフォームで広く使用されており、数百のサービスに対して毎日数千億の呼び出しを完了しています。

rpcx:Go言語エコシステムのDubboは、Dubboよりも軽量であり、Dubboの多くの機能を実装しています。優れた同時実行機能とGo言語の簡潔な構文により、分散RPCサービスを少ないコードで実装できます。

gRPC:Googleが開発した高性能の汎用オープンソースRPCフレームワークで、主にモバイルアプリケーションの開発用で、HTTP2プロトコル標準に基づいて設計されています。

ProtoBuf(プロトコルバッファー)シリアル化プロトコルの開発、および多くの開発言語をサポートします。

thrift:Apacheのクロス言語の高性能サービスフレームワーク

JSON-RPC:JSON-RPCは、ステートレスで軽量なリモートプロシージャコール(RPC)プロトコルです。

 

おすすめ

転載: www.cnblogs.com/zhan98/p/12710209.html