一、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); } }