RPC是一种远程方法调用,就像是在调用本地方法一样调用远程方法。
RPC框架结构图:
RPC框架需要做到的最基本的的三件事:
- 服务端如何确定客户端要调用的函数?
在远程调用中,客户端和服务端分别维护一个
ID->函数的对应表,ID 在所有进程中都是唯一确定的。客户端在进行远程函数调用的时候,附上这个 ID,服务端通过查表,就可以确定客户端需要调用的函数,然后执行相应函数的代码。
- 如何进行序列化和反序列化?
客户端和服务端交互的时候将参数或者结果转化为字节流在网络中传输,那么数据转化为字节流的或者将字节流转换成能读取的固定格式时就需要进行序列化和反序列化,序列化和反序列化的速度也会影响远程调用的效率。
- 如何进行网络传输?
多数RPC框架选择TCP作为传输协议,也有部分选择HTTP。如gRPC使用HTTP2。不同的协议各有利弊。TCP更加高效,而HTTP在实际应用中更加的灵活。
RPC和微服务
RPC框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务.
参考文章: