RPC通訊原理與詳細代碼

一、RPC(全拼:Remote Procedure Call)遠程過程調用協議,是一種經過網絡從遠程電腦程序上請求服務,而不須要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,例如http或TCP,爲通訊程序之間攜帶信息數據。在OSI網絡通訊模型中,RPC跨越了傳輸層和應用層使得RPC在開發包活網絡分佈式多程序在內的應用程序時更加的方便,容易。服務器

  RPC採用客戶機/服務器模式。請求程序就是一個客戶機,而服務提供程序就是一個服務器。首先,客戶機調用進程發送一個有進程參數的調用信息到服務進程,而後等待應答信息。在服務端進程保持睡眠狀態直到調用信息的到達爲止。當一個調用信息到達,服務器得到進程參數,計算結果,發送答覆信息,而後等待下一個調用信息的到來,最後客戶端調用進程接收答覆信息,得到進程結果,而後調用執行繼續進行。網絡

二、源碼例子分佈式

Interface:ide

1 public interface Barty{
2     public static final long versionID = 10010;
3     public String sayHello(String name);
4 }

 

RPCServer:ui

public class RPCServer implements Barty{
    public static void main(String[] args) throws Exception{
        Server server = new RPC.Builder(new Configuration())
        .setInstance(new RPCServer())
        .setBindAddress("192.168.8.100")
        .setPort(5566)
        .setProtocol(Barty.class)
        .build();
       server.start();
    }
    @Override
    public String sayHello(String name){
        return "Hello~"+name;
    }
}

RPCClient:spa

public class RPCClient{
        public static void main(String[] args){
            Barty proxy = RPC.getProxy(Barty.class,10010
                           ,new InetSocketAddress("192.168.8.100",9527)
                           ,new Configuration());
            String sayHello = proxy.sayHello("World");
            System.out.println(sayHello);
        }
}               
相關文章
相關標籤/搜索