RPCとHttp

RPCとは何ですか?RPCの原則は何ですか?

RPCとは何ですか?

RPC(リモートプロシージャコール)は、基になるネットワークテクノロジーを理解せずに、ネットワークを介してリモートコンピュータープログラムからのサービスを要求するプロトコルです。たとえば、2つの異なるサービスAとBが2つの異なるマシンにデプロイされている場合、サービスAがサービスBのメソッドを使用したい場合はどうなりますか?もちろん、Httpリクエストを使用することは可能ですが、遅くなる可能性があり、一部の最適化は適切ではありません。RPCの出現は、この問題を解決することです。

RPCの原則は何ですか?

 

1.サービスコンシューマ(クライアント)は、ローカルで呼び出すことによってサービスを呼び出します。

2.呼び出しを受信した後、クライアントスタブは、メソッド、パラメーターなどをネットワーク伝送が可能なメッセージ本文にアセンブルします。

3.クライアントスタブがサービスアドレスを見つけられず、メッセージをサーバーに送信します。

4.サーバースタブはメッセージを受信した後にデコードします。

5.サーバースタブは、デコード結果に従ってローカルサービスを呼び出します。

6.ローカルサービスが実行され、結果がサーバースタブに返されます。

7.サーバースタブは、返された結果をメッセージにパッケージ化し、コンシューマに送信します。

8.クライアントスタブがメッセージを受信して​​デコードします。

9.サービス利用者が最終結果を取得します。

タイミング図は次のとおりです。

 

 RPCはどのような問題を解決しますか?

上記のRPCの概要から、簡単に言えば、RPCは主に次のことを解決します。分散システムまたはマイクロサービスシステムでさまざまなサービスをローカルコールと同じくらい単純にする。

一般的なRPCフレームワークの概要

RMI(JDKに付属):JDKにはRPCが付属しており、多くの制限があります。推奨されていません。

Dubbo:DubboはAlibabaによってオープンソース化された高性能で優れたサービスフレームワークであり、アプリケーションが高性能RPCを介してサービス出力および入力機能を実装できるようにし、Springフレームワークとシームレスに統合できます。現在、DubboはSpring Cloud Alibabaになっています公式コンポーネント。

gRPC:gRPCは、あらゆる環境で実行できる最新のオープンソースの高性能RPCフレームワークです。プラグインサポートを通じてデータセンター内およびデータセンター間でサービスを効果的に接続し、ロードバランシング、追跡、動作チェック、および認証。また、デバイス、モバイルアプリケーション、ブラウザーをバックエンドサービスに接続するための分散コンピューティングのラストマイルにも適用されます。

Hessian:Hessianは、シンプルなメソッドを使用してRMI機能を提供する軽量のremotingonhttpツールで、WebServiceと比較して、シンプルで高速です。バイナリRPCプロトコルを使用していますが、バイナリプロトコルを使用しているため、バイナリデータの送信に最適です。

Thrift:Apache ThriftはFacebookのオープンソースのクロス言語RPC通信フレームワークです。管理のためにApache Foundationに寄贈されました。そのクロス言語機能と優れたパフォーマンスにより、多くのインターネット企業で使用されています。分散サービスフレームワークは、サービス登録やサービス検出などの機能を追加します。

Httpがあるので、なぜRPCを使用してサービス呼び出しを行うのですか?

RPCは単なる設計です

RPCは単なる概念であり、設計であり、異なるサービス間の呼び出しの問題を解決するために、一般的に2つの伝送プロトコルとシリアル化プロトコルが含まれています。

RPCを実装するトランスポートプロトコルは、TCPまたはHTTPプロトコル上に直接構築できます。ほとんどのRPCフレームワークはTCPリンクを使用します(gRPCはHTTP2を使用します)。

Http和TCP

コンピュータネットワークに精通していない多くの友人が混乱している可能性があります。本当に理解するには、コンピュータネットワークの基本を確認する必要があります。

私たちが通常参照するコンピュータネットワークの5層プロトコルのアーキテクチャ:アプリケーション層、トランスポート層、ネットワーク層、データリンク層、および物理層。

アプリケーション層の役割は、アプリケーションプロセス間の相互作用を通じて特定のネットワークアプリケーションを完成させることです。HTTPはアプリケーション層プロトコルに属し、TCP / IP通信プロトコルに基づいてデータ(HTMLファイル、画像、クエリ結果など)を転送します。Httpプロトコルは、クライアントサーバーフレームワークで動作します。ブラウザはHttpクライアントとして、すべてのリクエストをURLを介してHttpサーバー、つまりWebサーバーに送信します。リクエストを受信すると、Webサーバーはクライアントに応答メッセージを送信し、HTTPプロトコルはTCPプロトコルに基づいて構築されます。

トランスポート層の主なタスクは、2つのホストプロセス間の通信に一般的なデータ送信サービスを提供することです。TCPは、主にデータがネットワークで送信される方法を解決するトランスポート層プロトコルです。UDPやTCPと比較して、リンク指向で信頼性の高いデータ転送サービスを提供します。

主なキーは、Httpで使用されるTCPプロトコルとカスタムTCPプロトコルの違いにあります。

http1.1プロトコルのTCPパケットには、送信中に役に立たない可能性がある情報が多すぎます。

 

 送信にカスタムTCPプロトコルを使用すると、上記の問題が回避され、データ送信のオーバーヘッドが大幅に削減されます。これが、サービス呼び出しを行うためにカスタムTCPプロトコルRPCが通常使用される本当の理由です。さらに、成熟したRPCフレームワークは、「ディスカバリーにおけるサービスの自動登録」、「インテリジェントなロードバランシング」、「ビジュアルサービスの管理と運用とメンテナンス」、「ランタイムトラフィックスケジューリング」などの機能も提供します。サービスの登録と検出にRPCを選択する1つの理由。

よくある誤解

多くの記事では、カスタムTCPメッセージプロトコルと比較してHttpプロトコル、オーバーヘッドの増加がリンクの確立と切断であることについても言及していますが、このビューは拒否されており、次のインターセプトが回答の1つから取られています。

 

 

おすすめ

転載: www.cnblogs.com/xiaomowang/p/12693007.html
RPC