RPC フレームワークとは何ですか?
rpc フレームワークには、1. RMI、リモート メソッド呼び出し、2. ヘシアン、HTTP ベースのリモート メソッド呼び出し、3. Dubbo、タオバオのオープン ソース TCP ベース RPC フレームワークが含まれます。
rpc フレームワークには次のものがあります。
RPC はリモート プロシージャの略です。 call は大規模な分散アプリケーションで広く使用されており、その役割はシステムの垂直分割を促進し、システムの拡張を容易にすることです。 Java には多くの RPC フレームワークがあり、それぞれに独自の特徴があり、広く使用されているものには RMI、Hessian、Dubbo などが含まれます。 RPC のもう 1 つの特徴は、言語を越えて実行できることです。この記事では、例として JAVA 言語の RPC のみを取り上げます。
#RMI を例とした、RPC の論理関係図があります。
#他のフレームワーク構造も同様ですが、オブジェクトのシリアル化方法、オブジェクトを送信するための通信プロトコル、登録センターの管理とフェイルオーバー設計 (Zookeeper を使用) が異なります。
クライアントとサーバーは異なる JVM で実行できます。クライアントはインターフェースを導入するだけです。インターフェースの実装と実行時に必要なデータはすべてサーバー側で行われます。RPC主にテクノロジーに依存しており、シリアル化、逆シリアル化、および送信プロトコルであり、JAVA では、シリアル化されたデータのシリアル化、逆シリアル化、送信に相当します。 RMI のシリアル化と逆シリアル化は JAVA にネイティブです。ヘシアンのシリアル化と逆シリアル化はプライベートであり、送信プロトコルは HTTP です。Dubbo のシリアル化はさまざまなオプションから選択できます。一般的にはヘシアンのシリアル化プロトコルが使用されます。送信は TCP プロトコルで、高性能 NIO フレームワーク Netty。また、Google の ProBuffer、JBoss Marshalling、Apache Thrift などのシリアル化についても多少の知識はあります。以前、ProBuffer
# # を紹介するブログ投稿を書きました。 1. RMI (Remote Method Invocation)
JAVA 独自のリモート メソッド呼び出しツールですが、特定の制限があります。結局のところ、これは JAVA 言語のオリジナルの設計です。 、多くのフレームワークの原則は RMI に基づいていました。RMI の使用方法は次のとおりです:#外部インターフェイス
<span style="font-size:12px;">public interface IService extends Remote {
public String queryName(String no) throws RemoteException;
}</span>
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
// 服务实现
public class ServiceImpl extends UnicastRemoteObject implements IService {
/**
*/
private static final long serialVersionUID = 682805210518738166L;
/**
* @throws RemoteException
*/
protected ServiceImpl() throws RemoteException {
super();
}
/* (non-Javadoc)
*
*/
@Override
public String queryName(String no) throws RemoteException {
// 方法的具体实现
System.out.println("hello" + no);
return String.valueOf(System.currentTimeMillis());
}
}
import java.rmi.AccessException; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; // RMI客户端 public class Client { public static void main(String[] args) { // 注册管理器 Registry registry = null; try { // 获取服务注册管理器 registry = LocateRegistry.getRegistry("127.0.0.1",8088); // 列出所有注册的服务 String[] list = registry.list(); for(String s : list){ System.out.println(s); } } catch (RemoteException e) { } try { // 根据命名获取服务 IService server = (IService) registry.lookup("vince"); // 调用远程方法 String result = server.queryName("ha ha ha ha"); // 输出调用结果 System.out.println("result from remote : " + result); } catch (AccessException e) { } catch (RemoteException e) { } catch (NotBoundException e) { } } }
#RMI サーバー
import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; // RMI服务端 public class Server { public static void main(String[] args) { // 注册管理器 Registry registry = null; try { // 创建一个服务注册管理器 registry = LocateRegistry.createRegistry(8088); } catch (RemoteException e) { } try { // 创建一个服务 ServiceImpl server = new ServiceImpl(); // 将服务绑定命名 registry.rebind("vince", server); System.out.println("bind server"); } catch (RemoteException e) { } } }
サービスの登録管理 サーバーはServerに記述されており、もちろん別のサービスとして取り出すことも可能ですが、他のフレームワークではZookeeperが登録管理の役割を果たすことがよくあります。
2. ヘッセ行列 (HTTP ベースのリモート メソッド呼び出し)
HTTP プロトコル送信に基づいて、そのパフォーマンスは次のようになります。まだ良好です 完璧ではありません。ロード バランシングとフェイルオーバーはアプリケーションのロード バランサに依存します。ヘシアンの使用は RMI に似ています。違いは、レジストリの役割が軽視されていることです。表示されたアドレスを通じて呼び出され、HessianProxyFactory を使用して設定されたアドレスに基づくプロキシ オブジェクト さらに、Hessian Jar パッケージも導入します。
#3. Dubbo (淘宝網のオープンソース TCP ベースの RPC フレームワーク)
#Netty に基づく高性能 RPC フレームワークは、Alibaba によってオープンソース化されており、全体的な原則は次のとおりです。 Dubbo を理解する前に、まず Zookeeper について深く理解する必要があります。一度 Zookeeper を理解すれば、Dubbo に秘密はなくなります。
Dubbo の詳細な説明は、タオバオ オープンソースに非常に詳しく記載されています。Dubbo は仕事で多くの制作プロジェクトで使用されており、その過程で注意が必要な点も多く発見されています。多数の構成や不適切な設定は煩わしいので、既存のオープンソース Dubbo をベースにカスタマイズして最適化するのが最善です。
関連する無料学習の推奨事項:
以上がRPC フレームワークとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











あなたは質問されていないかもしれません、おそらくあなたは幸運であるかもしれません、あるいはあなたはまだこのレベルに達していないかもしれません。通常、月給は20,000以上で、基本的にデザインに関する質問をいくつか受けます。面接官の観点から: この種の質問をすることは、多くの技術的なポイントを含む 8 部構成のエッセイを書くよりも効果的です。例: デザイン パターン、通信プロトコル、動的エージェント、仮想化、スレッド プールなどに関する知識。

RPC はコンピュータ通信プロトコルです。このプロトコルを使用すると、開発者がこの対話を追加でプログラムすることなく、あるコンピュータ上で実行されているプログラムが別のコンピュータ上のサブルーチンを呼び出すことができます。

1. RPC フレームワークの概念 分散システムでは、異なるサーバーとクライアントの間でデータを転送する必要があることが多く、RPC (RemoteProcedureCall) フレームワークは一般的に使用される技術手段です。 RPC フレームワークを使用すると、アプリケーションはリモート メッセージングを通じて別の実行環境の関数やメソッドを呼び出すことができるため、プログラムを別のコンピュータで実行できるようになります。現在、Google の gRPC、Thrift、Hessian など、多くの RPC フレームワークが市場に出回っています。この記事では主に

RPC (RemoteProcedureCall) は、異なるプロセスが異なる物理マシン上のネットワークを介して通信および共同作業できるようにするプロセス間通信プロトコルです。 RPC フレームワークは、開発者が分散システムの開発を容易に実装できるため、ますます注目を集めています。この記事では、PHP を使用して RPC フレームワークを開発する方法を段階的に紹介します。 1. RPC フレームワークとは何ですか? RPC フレームワークは、リモート プロシージャ コールを実装するために使用されるフレームワークです。 RPCベースの場合

RPC フレームワークには次のものが含まれます: 1. Google によって開発された高性能のオープンソース RPC フレームワークである gRPC; 2. Facebook によって開発されオープンソース化されているクロス言語 RPC フレームワークである Apache Thrift; 3. 高パフォーマンスのオープンソース RPC フレームワークである Apache Dubboパフォーマンス、軽量な RPC フレームワーク、大規模な分散システムに適しています; 4. Apache Axis2、Web サービス標準に基づく RPC フレームワーク; 5. Spring Cloud、分散システムを構築するためのオープンソース フレームワーク。

Go 言語は重要な現代プログラミング言語として、分散システム開発でますます使用されています。分散システムを構築する場合、多くの場合、RPC (リモート プロシージャ コール) フレームワークの選択が重要になります。この記事では、現在主流の Go 言語 RPC フレームワークの水平評価を実施し、パフォーマンス、使いやすさ、コミュニティ サポートの観点から長所と短所を比較し、具体的なコード例を添付します。 1. パフォーマンスの比較 分散システムでは、多くの場合、パフォーマンスは開発者が注目する主要な指標の 1 つです。以下は主なものです

Go 言語で高同時実行 RPC フレームワークを実装する方法の紹介: インターネットの急速な発展に伴い、高同時実行アプリケーションがますます注目を集めています。 RPC (RemoteProcedureCall) フレームワークを使用するのが一般的な解決策です。この記事では、Go 言語で同時実行性の高い RPC フレームワークを実装する方法をコード例とともに紹介します。 RPC フレームワークの紹介: RPC は、コンピュータ プログラムが別のアドレス空間 (通常はリモート コンピュータ上にある) にあるサブルーチンを、何もせずに呼び出すことを可能にする通信プロトコルです。

コンピュータ技術の継続的な発展に伴い、分散システムが主流になり、リモート プロシージャ コール (RPC) は分散システムを実装する重要な手段です。人気の Web プログラミング言語として、PHP には独自の RPC フレームワークもあり、その中には PHP7.0 バージョンでいくつかの新しい RPC フレームワークが導入されました。この記事では、PHP7.0における一般的なRPCフレームワークとその特徴を紹介します。 PHPRemoteProcedureCall(phpRPC)phpRPC は軽量 RP です
