作者:书友40416624 | 来源:互联网 | 2023-09-23 10:48
前言
微服务已经是每个互联网开发者必须掌握的一项技术。而RPC框架,是构成微服务最重要的组成部分之一。在五一假期,尝试去看了看dubbo的源代码,这里做一个整理。
广义的来讲一个完整的RPC包含了很多组件,包括服务发现,服务治理,远程调用,调用链分析,网关等等。这篇文章主要先讲解的是 RPC 的基石,远程调用 的实现。
RPC调用过程
下图就很直观的表明了一次RPC调用的过程
- client 会调用本地动态代理 proxy
- 这个代理会将调用通过协议转序列化字节流
- 通过网络框架,将字节流发送到服务端
- 服务端在受到这个字节流后,会根据协议,反序列化为原始的调用,利用反射原理调用服务方提供的方法
- 如果请求有返回值,又需要把结果根据协议序列化后,再通过网络框架返回给调用方
技术选型:proxy的实现使用cglib,网络框架使用的是广为使用的netty,序列化的