RPC通信原理


《架构思考》-RPC通信原理

RPC调用流程

  • 服务端、
  1. 网络模块
  2. 协议解码
  3. 反序列化
  4. 服务调用
  • 客户端
  1. 调用接口方法
  2. 代理实现
  3. 序列化
  4. 协议编码
  5. 网络模块

Netty通信框架

Reactor模型

  • Reactor单线程模型

  • Reactor多线程模型

  1. MainReactor主线程
    • 单个线程,负责接收客户端连接
  2. SubReactor线程池
  • 负责事件检测、I/O操作
  1. worker线程池
  • 负责业务处理

优劣分析:MainReactor主线程与SubReactor线程池职责分工明确,MainReactor主线程只负责接收客户端连接,SubReactor线程池负责事件检测、I/O操作,worker线程池负责业务处理。
MainReactor主线程与SubReactor线程的数据交互简单,MainReactor主线程只需要把新连接传给SubReactor线程池即可,SubReactor线程池无需返回数据;
多个SubReactor线程能够应对更高的并发请求;
缺点:编程复杂度较高

小结:Reactor多线程模型也被称呼为1+M+N模型,1代表MainReactor主线程,M代表SubReactor线程池,N代表worker线程池。广泛应用于Ngix、Netty等高性能网络框架中。


  TOC