剥掉层层外衣后的RPC是什么样子的?

RPC,全称为Remote Procedure Call(远程过程调用)。通俗一点讲就是在本地调用远程服务器上的功能。实现远程调用需要满足以下几个条件:

1.网络通信

2.序列化与反序列化

3.反射

远程通信是远程调用的前题,只有经过序列化后的数据才能在网络上传输,传输到服务器端后需要反序列化成对象,然后通过反射机制调用服务器上客户端指定的服务,再将结果返回给客户端,用一张图表示:

剥掉层层外衣后的RPC是什么样子的?

 

服务器每收到一次客户端的请求,就启动一个线程处理,调用具体的服务对象相应的方法,并将返回结果返回给客户端。

基于此原理,下面写一个示例实现RPC功能:

项目结构图如下:分别有客户端、服务器、服务以及请求与响应。

剥掉层层外衣后的RPC是什么样子的?

 

 首先抽象出请求类与响应类:

 请求类:属性有请求的类名、方法名、输入参数类型、输入数据。

package cn.yang.common; import java.io.Serializable; //请求 public class Request implements Serializable { private String className;//类名 private String methodName;//方法名 private Class[] inType;//输入参数类型 private Object[] inData;//输入数据 public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getMethodName() { return methodName; } public void setMethodName(String methodName) { this.methodName = methodName; } public Class[] getInType() { return inType; } public void setInType(Class[] inType) { this.inType = inType; } public Object[] getInData() { return inData; } public void setInData(Object[] inData) { this.inData = inData; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxsxw.html