一、什么是RPC框架
RPC框架主要是解决大型系统的功能重用,从而节省开发资源,通过一系列技术,从而完成服务的解耦,重用和高扩展化,从而可以将以开发的资源运用的到新的系统内。我们目前常用的RPC框架有。Dubbo/Dubbo、springcloud、Thrift(Facebook)、gRPC等。为了解决一些列问题,如服务调用,服务注册,权限控制,流量控制。从而有了如下技术重点:消费者方式(cglib字节码注入,netty),生产者方式(服务容器,netty),访问权限控制,协议(自定义协议/RPC协议),序列化,反序列化,访问权限控制(本地缓存,心跳同步+主动通知),流量限制控制。和服务发现。
二、部分RPC框架特色
dubbo的特点为传输速度块,但是功能单调。
springCloud的特点为功能高,但是速度相对于dubbo要慢很多,因为其主要通过HTTP协议。
三、其中Netty
groupbuffer:
四、序列化和反序列化
序列化主要完成将对象数据转换成字符串,反序列化则相反。而其主要的实现原理就是reflect。但是在传输过程中我们会加入我们要生成对象的包信息,也就是路径信息。在拼接过程中就需要将路径信息和对象的Feild信息形成K_Value的方式进行字符串拼接。在之后的反序列化中通过反射进行对象生成。同时这也就要求了相关类打包成jar并且可以通过Maven进行下载。从而使得生产者和消费者端同时拥有相关类的信息。
五、访问权限控制
访问权限控制,主要是为了
代理人制度
六、流量控制
流量控制,超过访问次数不能再次访问。 计数方式
流量限制通用也是代理人制度。都是由消费者的本地缓存实现的。
七、服务发现
一般通过就是注册中心,通过主动注册还进行服务发现。