RPC - 小さいながらも完全に形成され

RPC(リモートプロシージャコール)といえば、それは不慣れではありません。マイクロサービスでは、より多くの人気、RPCアプリケーションがますます一般的に分散。そうでダボ、gRPC、スリフトと次のような一般的なRPCフレームワーク。この記事では、さまざまな使用しないでRPCとコントラストを説明します。しかし、どのようなRPCの徹底的な分析が含まれています。I最近、Hadoopのソースコード、単にHadoopのRPCを読み取ります。HadoopのRPCフレームワークのデザインや優れたパリティ感。礎石、そうでない場合は、クラスタ内のサーバの数千人をサポートするために拡張することは困難で、高性能、高信頼性のRPCフレームワークとして、Hadoopのビッグデータ技術。したがって、例えばだけのHadoop RPCこの資料、関与する技術のRPCフレームワークを記述する。

アーキテクチャの設計

RPCのアーキテクチャには、クライアント、ネットワーク、サーバの3つの主要コンポーネントが含まれます。ネットワークは、一般的にソケットを使用し、最適な達成するために、従来のネットワークフレームワークに基づいてより多くのパラメータを設定されています。しかし、私たち自身のデザインのクライアントとサーバのニーズが、分散フレームワークのために、アーキテクチャの設計は、高性能、高可用性とスケーラビリティ機能を持つ必要があります。

  • 高パフォーマンス:クライアントは応答遅延を減らすことができ、高速処理システムを必要とすると同時に、で複数の要求を開始しますので。これは、高スループット、低遅延です。クライアントの観点から、顧客として高いからサーバーへの接続コストを作成します。したがって、キャッシュは、パフォーマンスの低下を作成するために、各クライアントを避けるために、同じリソースを再利用するために接続されている複数のクライアントを達成するために、リソースに接続することができ、サーバの観点から、クライアントの要求を処理するために、同時マルチスレッドを開始することができます。マルチスレッドに加えて、マルチスレッド性能を向上させるために原子炉のプログラミングモデルを使用することができます。
  • HA:当社のサーバーがハングアップした場合、スペアノードがサービスを提供し続けることができます。Hadoopの2.xでは名前ノードの高可用性を実現しています。クライアントプロセスはRPC経由で名前ノードのサービスを呼び出す必要がある場合は、下のメイン名前ノードならば、それはスタンバイ名前ノード、アクティブノードに変わります。同時に、現在アクティブな名前ノードは、利用可能なサービスを提供し続けるためにRPCリクエストを送信し、このプロセスは、クライアントのために透明です。
  • スケーラビリティ:フレームワークはエスカレートし、最適化を継続する必要があります。一定の需要のアーキテクチャの設計点で明確な必要性、および可変の需要ポイント、変数の需要は良い拡張性を持っている必要があります。シリアル化されたRPCの例に関与。、異なるアプリケーションシナリオフレームワーク配列に、これは可変需要点として扱われる必要があり、容易に異なるフレームワーク配列を支持することができる、拡張可能であるように設計されるべきです。現在、HadoopのRPCは、彼らのシリアライズフレームワーク(書き込み可能)とProtocバッファをサポートしています。

デザインパターン

上記のエコーよりスケーラブルなパフォーマンスとデザインパターン。BUGの数を削減しながらグッドデザインパターンは、コードの再利用性、スケーラビリティを向上させることができます。工場モデル、プロキシモード、アダプタモード、デコレータモードとコマンドモード:HadoopのRPCは、おそらく含め、デザインモードで、より関与しています。プロキシモードでは、例えば、クライアントは、実際には、メソッド名とパラメータは、プロキシを経由してネットワーク経由でサーバーに送信されるリモートメソッド呼び出したとき。このプロセスは、クライアントに対して透過的である。しかし、クライアントは、ローカルメソッドを呼び出すのと同じです。

パターンを設計に加えて、技術的手法では、それはまた、共通の設計原則に従うよう注意を払う必要があります。

マルチスレッド

任意のマルチスレッドシステムにおいてより一般的です。システムスループットを向上させるマルチスレッド並列処理、スルー。HadoopのRPCでは、クライアントとサーバーは、マルチスレッド技術で使用されています。複数のクライアントスレッド、リクエストクラスを扱うそれぞれ、およびキャッシュ接続リソースをオンにします。サーバは、並行処理プログラミングモードを向上させる原子炉を使用して、クライアントの要求を処理するマルチスレッドです。

スレッドセーフ - マルチスレッドを言えば、別の話題に言及しなければなりません。同期、同時および請負、原子・請負とNIOキット:HadoopのRPCには、スレッドの安全性を確保するための技術の多くを使用しました。良いフレームワークから安全な学習を通し、並行プログラミングの後、私たちのために良いのがたくさんあります。

シリアライズとデシリアライズ

RPCは、良好なフレームワーク配列を必要とする、ネットワークを介して送信されるデータに関連しているので、効率的に符号化及び復号化、符号化のデータサイズとできるだけ小さいの両方であることができます。異なる配列のフレームワークは、主に二つの主要な方法で行われているコーデックの符号化サイズと効率を量ります。HadoopのRPCは、現在、2つのシリアル化フレームワークをサポートし、フレームワークは、他のプロトコルバッファのHadoopの書き込み可能な独自の実装です。HadoopのRPCが、書き込み可能なシリアル化のフレームワークをサポートしていますが、まだプロトコルベースのバッファインチ コーデックの符号化効率と便利なサイズのプロトコルバッファので、比較的良好です。もちろん、アブロ、Kryoおよびその他の関心のある読者を含む一般的な直列化は、それらの間の性能比較をチェックアウトすることができます。

他の

RPCフレーム、上記主態様比較に加えて含みます。他の側面があります

  • 言語レベル:良い継承、組み合わせ、カプセル化、多型およびその他のJava言語の特性を利用して。それでも上のジェネリック医薬品、注釈などを含みます。
  • コードの仕様:良いプロジェクトの実施は、良いコードの仕様を持っている必要があります。Hadoopのでは、より統一コードスタイル、および各クラスは、キーメソッドやプロパティに重要な詳細なメモを持っても、明確なコメントがあります。私はまた、彼らのコードはより標準化させるためには、自分のプロジェクトでJavaコード規程アリプラグを使用します。
  • 例外処理:例外処理のための優れたフレームワークのためには、投げる例外をスローし、私は例外を処理するために何が必要かするとき、非常に重要です。RPCプロセスローカル異常に加えて異常なリモートサービスに対処しなければなりませんでした。そのため、例外を処理する方法プログラムでは、プログラマの能力を反映するエレガントな場所です。
  • NDIS:関与するネットワーク・プログラミング・ソケットRCP一般的な使用、使用するネットワークプログラミングのHadoop RPC炉パターン、およびそのようなフレーム網状の使用。私たちは、それを使用して習得する必要があります。

 このセクションでは、書き込みより複雑な、どこの書き込みに何を考えます。最近RPC関連で物事を見るために友人と話を、友人は言った:「物事の数は?勉強の価値RPCを関与することができます。」実際に、私はそう考え始め、あまりにも、その後、ネットワーク・サーバによって送信されたクライアント要求のシーケンス、以外の何物でも、サーバーのデシリアライズ関数コールとリターンではありません。しかし、HadoopのRPCコードを読んだ後、私はこのフレームワークの知識は特に関与し、また、システムは基本的に関与いつものプログラミングのあらゆる側面を含んで比較しました。同時に、それはもはやスタンドアロンプ​​ログラムが、フレームワークプログラムCのSの/ではありません。私たちが興味を持っている場合はその分散アプリケーションをより良く理解すること、彼の可用性を勉強し続けることができます。

私は、RPCは、小さいながらも完全に形成されていると思います。それが私たちのプログラムのすべての側面を必要とするので、私はHadoopのRPCに基づいており、詳細なチュートリアルをしたいので、それの重要な部分は、それぞれが基本でカバーされる上記した内容の詳細な分析を行っているが含まれます。読者のためにRPCを知りたい、と明確な外観のRPCフレームワークを感じることができます。唯一のJavaベースの読者のために、あなたは世界のトップオープンソースプロジェクトにおける優れたデザインとエンジニアリングの経験から学ぶことができる一方、関与する特定のプログラミング手法の枠組みを準備することを学ぶことができます。

概要 

この記事では、関係する知識のRPCフレームワークを紹介します。含む:アーキテクチャ、設計パターンと設計原則、マルチスレッドとスレッドセーフな、シリアル化フレームワークおよびその他のコンテンツ。私は学ぶための最善の方法は、模倣するための最良の枠組みから学ぶことだと思います。たとえば、私たちは基本的な書道をコピーしてこの手順を行きます。もちろん、コードで直接見て、本当に多くの時間と経験を費やす必要があり、時には、入力と出力に比例しません。だから、私は良い設計と実装の私の学んだHadoopのRPCフレームワークを学ぶためのチュートリアルなので、興味のある読者に編成することができますしたいです。あなたはどんな提案があれば私と一緒に共有してください。公共の福祉の数があります。

公共いいえ「遷移コードありません」

 

おすすめ

転載: www.cnblogs.com/duma/p/11074498.html
RPC