のサービス深い理解の間RPCコール

A:RPC

そのRPCリモートプロシージャコール(リモートプロシージャコールプロトコル、RPCをいう。)、呼び出し(メソッド)のようなローカルサービスコールサービス(メソッド)サーバーとして。通常の実装では、送信データの形式ことを除いてXML-RPC、実質的に同一のJSON-RPC、通信方式を有しています。

RPCは、2つの点を次の応答を介して、コア分散アーキテクチャです。

同期呼び出し:サービス側が結果またはタイムアウトを返すまで、クライアントは、待機サービス側メソッドを呼び出して、その後、その運用は継続します

非同期呼び出し:クライアントは、サーバがその業務を継続するために直接戻るのを待つことなく、ミドルウェアにメッセージを送信します。

同期呼び出しWebサービスとRMIの実装があります。サービスWebサービスは、Webベースのコンテナ、根本的な利用異種システム間で異なる言語を求めてhttpプロトコルを提供します。RMIは、実際には、Javaメソッドの戻りオブジェクトと基本データ型、Java言語を構築するのに適した異なるシステム間での通話を可能にするJava言語RPC実装です。

JAVAのリアライズバージョン非同期呼び出しは、JMS(Java Message Serviceの)、ミドルウェアは、ActiveMQのApacheのコミュニティがあり、現在、オープンソースのJMS、カフカメッセージング・ミドルウェア、およびアリRocketMQの別のです。

RPCフレームワークは、以下の4つのコンポーネントが含まれています。

1、クライアント(クライアント):サービスへの発信者

図2に示すように、クライアント・スタブ(クライアントスタブ)、サーバのアドレス情報を記憶するクライアント要求のパラメータがネットワークメッセージに充填し、次にサービングネットワークを介して送信されます

3、サーバ・スタブ(サーバスタブ):クライアントおよびアンパックにより送信されたメッセージを受信するには、ローカルサービスを呼び出します

4、サーバー(サーバー):真のサービスプロバイダ。 

 

 

具体的な実装手順:

ローカル通話サービスを呼び出すための1、サービスの呼び出し側(クライアント)(クライアント)。

図2に示すように、クライアント・スタブは、プロセスパラメータ等を受信するための責任がある呼転送メッセージ本文後にネットワークに組み立てることができ、Javaのシリアル化での処理であります

図3は、クライアントスタブは、サービスのアドレスを見つけて、ネットワークを介してサーバにメッセージを送信します。

図4に示すように、メッセージを受信した後デコーディングサーバ・スタブは、Java(登録商標)逆シリアル化プロセスです。

5、デコード結果に基づいて、ローカルサービスを呼び出して、サーバスタブ。

図6は、処理ロジックは、ローカルサービスを行います。

図7に示すように、ローカルサービスは、サーバースタブに結果を返します。

図8にリターン結果メッセージ、Javaのシリアライゼーションにパッケージサーバースタブ。

図9に示すように、ネットワーク・サーバ・スタブを介してメッセージをパッケージ化され、消費者に送られます

デシリアライズで、Javaのメッセージを受信し、復号10、クライアント・スタブ。

最終的な結果を得るために11、サービス呼び出し側(クライアント)。

RPCの目標は、ユーザーがリモートサービスのようなローカル通話サービスとして呼び出すことができるように、カプセル化されたコール、エンコーディング/デコーディングプロセスアップ2-10フレームのカプセル化の段階にあります。クライアント(呼び出し側に)透明サービスを実現するために、RPCフレームワークは、以下の質問に対処を検討する必要があります: 
1、コミュニケーションの問題:主にクライアントとサーバ間のTCPコネクションを確立することにより、リモート・プロシージャは、すべてのデータ交換がされるコール伝送この接続インチ 接続は、同じ接続を共有するコールの終了を切断した後、それは長い接続することができ、必要に応じて接続され、複数のリモート・プロシージャ・コールすることができます。 
2は、問題のアドレス指定:(ホストやIPアドレスなど)のサーバBへの接続方法、基本的なRPCフレームワークを伝える方法については、サーバーアプリケーションを、特定のポートの名前は何である、方法が呼び出しを完了するために、あります。たとえば、WebサービスベースのプロトコルスタックのRPCは、エンドポイントURI、またはUDDI検索サービスからを提供しなければなりません。RMI呼び出しはまた、RMIレジストリサービスを登録するアドレスが必要になります。 
3、シリアライゼーションおよびデシリアライゼーション:ネットワークプロトコルので、リモート・プロシージャ・コールは、メソッドのパラメータは、基本的なネットワークプロトコルを介してサーバBにTCPとして渡す必要があるサーバAが開始上のアプリケーションは、のパラメータに基づいてバイナリメモリである場合すなわち、(シリアライズ)または基(マーシャル)の配列配列のバイナリ値に変換する形に、アドレスBとバイナリ配列の転写によってサーバに送信されます。 
同様に、Bパラメータセットのパラメータサーバは、非直列化さを受け取ります。Bサーバアプリケーションは、サーバが非直列化プロセスを介しても受信し、それらの結果を返す方法は、シリアル化サーバに後処理されるべきで呼び出します。

おすすめ

転載: www.cnblogs.com/flzs/p/12174686.html