RPC框架大家或多或少都用过,出自于阿里系的就有dubbo,HSF,sofaRPC等。但是,要深入理解RPC的原理却不容易,其中光是核心部分,就涉及到动态代理,netty,服务注册与发现,序列化,多线程等等。笔者为了弄清楚RPC框架的大致调用实现原理,自己造了个轮子——Zrpc.
首先,笔者写这个RPC框架的目标,并不是为了让它成为一个生产级的框架,而是帮助自己理解一些底层技术,增加各种方面的知识,在这同时,如果能让一些感兴趣的新手朋友获得一些收获就再好不过。
Zrpc1.0基于springboot和netty实现,暂时使用consul作为服务注册与发现。其中,spring拓展接口与netty调用占了比较大的比重。在接下来的规划中,我打算为整个框架加入内核——拓展点,让开发者可以在一些想二次开发的地方(如用其他注册中心,自实现负载均衡策略,更换序列化协议等等),更好的去更换和拓展。
最开始,笔者是个新手,让我实现RPC框架完全无从下手,所以参考了很多位朋友的代码和文章,最后找到了这位朋友
https://blog.csdn.net/u012422829/article/details/78375839。Zrpc中很多代码是从其中参考过来,但是笔者对整个框架结构和一些细节上做了调整,让其更适用于springboot(原作基于springmvc)。此外,这位朋友的水平很不错,如果你是新手可以受益匪浅。
最后,附上github地址https://github.com/skesunny/ZRpc。今后,我会将实现细节慢慢写成文章,和各位朋友一起讨论。