霜天部落 | 专注PHP研发,研究LAMP高性能架构部署与优化

RPC框架的设计图解分析

1、RPC框架的调用过程详解

RPC框架设计应属生产者 – 消费者模式,服务提供方为生产者,服务调用方为消费者,下图为整个RPC调用过程分析:

图 中消费者(客户端)、生产者(服务器)以实心竖线分开,图中标记的1、2、3、4 步骤为客户端调用RPC方法,对于客户端调用者来说,跟调用本地方法无任何区别,其他部分(代理对象、序列化、反序列化、网络通信)全部由RPC框架实 现,这一点证实了上一篇所说的RPC目的之一:不用了解底层通信,像本地方法一样调用。

下图为消费者(客户端)模块:

RPC框架客户端分为三层:

  • 代理层:非真正实现部分,正真实现部分应处于RPC框架服务器端
  • 序列化层:将数据序列化,以便在网络间传输。当数据返回时,由它进行反序列化,将还原真正的返回数据
  • 通信层:通过HTTP或者TCP协议负责网络数据传输与接受

下图为生产者(服务器端)模块:

 

2、RPC框架设计的特点

  • 封装网络交互:尽量不让框架的使用者涉及到过多的网络层开发
  • 远程调用对象的代理:推荐使用面向接口编程,代理对象和真正工作对象实现同一接口
  • 支持容器(Spring、Jetty等)
  • 可配置、可扩展

3、总结RPC框架设计模型

  • Proxy代理层:用于对象的代理
  • Serialize序列化层:将请求数据和返回数据做序列化和反序列化
  • Invoke网络模块:用于网络通信处理
  • Container容器组件:一般来自第三方框架:如Spring、Jetty等等。