RPC框架的实现
又到年初了,大家又要开始准备面试了。为了方便大家,我就写几篇面试相关的文章吧,这次是Dubbo
相信很多小伙伴已经看了很多Dubbo的八股文了。比如,Dubbo支持哪些序列化框架,支持哪些注册中心,支持哪些集群容错策略,支持服务降级吗?但是你知道Dubbo服务导出和服务引入的过程吗?服务降级是如何实现的?等等
本文就从源码的角度来分享一下Dubbo的整个调用过程(放心,图示为主,辅助一少部分源码)
RPC框架的实现基本上都是如下架构
一个RPC调用的过程如下
- 调用方发送请求后由代理类将调用的方法,参数组装成能进行网络传输的消息体
- 调用方代理类将消息体发送到提供方
- 提供方代理类将消息进行解码,得到调用的方法和参数
- 提供方代理类执行相应的方法,并将结果返回
协议,编解码,序列化的部分不是本文的重点,我就不分析了,有兴趣的可以看我之前的文章。
首先来手写一个极简版的RPC框架,以便你对上面的流程有一个更深的认识