一、思路分析
1.1 什么是RPC框架
我们在要写RPC框架,我们先思考下RPC是什么? 白话点就是一个远程通信的工具而已。 他可以让开发者像调用本地方法一样,方便的调用远程的方法。
目前市面上的RPC框架主要有下面这些
-
dubbo
-
grpc
-
feign
可能对于银行和传统国企可能偏爱国产的dubbo框架,可能会涉及到国家安全吧,而对于互联网公司更多的会使用SpringCloud的全家桶。那么不管他们使用的其中的哪一款,其实这些框架都是能做到,让开发者像调用本地方法一样实现远程方法的调用的。
可以实现远程调用的呢? 答案当然就是利用socket通信了。而socket底层通信 都是基于tcp/ip协议实现的。所以以上这三款的
1.2 通信框架的区别
-
dubbo
-
grpc
-
feign
共同点:
-
都是基于tcp/ip协议来实现通信
-
都屏蔽底层通信细节,使开发者只用关心自己的业务即可
不同点:
-
grpc和feign都是基于tcp协议更上层的http协议来实现的
-
dubbo是基于tcp协议上自己重新实现了一套自己的规则,而这个规则就是dubbo协议。
dubbo协议因为是直接基于tcp协议定制的,所以可能性能会更加的好。能实现更多的底层的特性,比如说长连接。而其他两款是基于http协议来进行封装的,正因为它的这个特性,所以只是http客户端都可以进行调用,更适合跨平台,跨语言。因为不管是什么语言,都支持http协议。但是他的性能可能就相对没有dubbo好,综上所述他们各有胜负。现在主要比的就是看谁的生态比较好,谁的周边扩展更加丰富。
1.3 RPC底层实现
前面我们说了,RPC框架是一个,可以让程序猿像调用本地方法一样实现远程方法调用的一个工具。其实这句话就说出了主要的答案。
远程调用 = 计算机通信 屏蔽细节 = 动态代理
既然知道了他的大概实现&#