RPC 是远程过程调用 (Remote Procedure Call),即远程调用其他虚拟机中运行的 java
object。 RPC 是一种客户端/服务器模式, 那么在使用时包括服务端代码和客户端代码, 还有
我们调用的远程过程对象。
RPC调用机制,如下图
PRC cline 和 service 端必须实现同一接口!
、、、、、、运行机制、***、、、、
1、先获取 interface 接口 和 service 代理对象。
2、通过代理对象调用该代理类的业务方法,并调用socket的发送请求的方法。
3、服务端接收请求,并反射出请求中的动态代理类。
4、同时生成socket和该类的动态代理,并实现该类的逻辑。
5、通过socket相应该类运行结果给客户端
6、客户端通过接收service端的请求,获取运行结果。
RPC Cline端
java代码:
public interface MyRpc {//版本信息public static final long versionID = 1L;//业务方法public String loginServer(String name , String password);}client 端通过RPC.getProxy获取本地代理
public class Test {public static void main(String[] args) throws Exception {//获取MyRpcMyRpc proxy = RPC.getProxy(MyRpc.class, 1L, new InetSocketAddress("10.30.95.166", 10000), new Configuration());System.out.println(proxy.loginServer("zldrg", "213123"));}}service端
MyRpcImpl 实现了MyRpc,并通过RPC.Builder获取Builder
public class MyRpcImpl implements MyRpc {@Overridepublic String loginServer(String name, String password) {return "欢迎"+name+"登陆";}} public class Test {public static void main(String[] args) throws Exception {Builder builder = new RPC.Builder(new Configuration());builder.setBindAddress("10.30.95.166").setPort(10000).setProtocol(MyRpc.class).setInstance(new MyRpcImpl());Server build = builder.build();build.start();}}运行结果: