使用netty实现一个简易的RPC框架
项目使用vscode开发,使用到的框架,引入一个netty就行了
项目采用模块化开发,interfaces表示需要远程调用的接口,provider表示服务提供者模块,consumer服务消费者模块,framework框架模块,提供者和消费者都需要引入框架模块
原理图
首先框架在服务端会将接口对应实现类的所有方法生成一个代理调用对象ProxyInvoke,存到一个容器中
ProxyInvoke.java
package com.proxy;
import java.lang.reflect.Method;
public class ProxyInvoke {
// 方法所在对象
private Object object ;
// 放大反射
private Method method ;
// 方法调用
public Object invoke(Object[] args) throws Exception{
return method.invoke(object, args) ;
}
public void setMethod(Method method) {
this.method = method;
}
public void setObject(Object object) {
this.object = object;
}
}
消费者会对接口产生一个代理对象,然后存储到spring容器中去,这样通过接口名称就可以直接引入实现类对象了
package com.proxy;
import java.lang.reflec