1. 程式人生 > >dubbo的RPC是什麼,還有什麼其他的RPC?

dubbo的RPC是什麼,還有什麼其他的RPC?

RPC是遠端過程呼叫的簡稱,廣泛應用在大規模分散式應用中,作用是有助於系統的垂直拆分,使系統更易拓展。Java中的RPC框架比較多,各有特色,廣泛使用的有RMI、Hessian、Dubbo等。RPC還有一個特點就是能夠跨語言。

1、RMI(遠端方法呼叫)

JAVA自帶的遠端方法呼叫工具,不過有一定的侷限性,畢竟是JAVA語言最開始時的設計,後來很多框架的原理都基於RMI,RMI的使用如下:

對外介面

12345<span style="font-size:12px;">public interface IService extends Remote {  public String queryName(String no) throws RemoteException;  
}</span>

服務實現

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102import 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) * @see com.suning.ebuy.wd.web.IService#queryName(java.lang.String) 
*/  @Override  public String queryName(String no) throws RemoteException {  // 方法的具體實現  System.out.println("hello" + no);  return String.valueOf(System.currentTimeMillis());  }  }  RMI客戶端[java] view plain copyimport 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服務端[java] view plain copyimport 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 {  // 建立一個服務註冊管理器