《架构思考》-RPC通信原理
RPC调用流程
- 服务端、
- 网络模块
- 协议解码
- 反序列化
- 服务调用
- 客户端
- 调用接口方法
- 代理实现
- 序列化
- 协议编码
- 网络模块
Netty通信框架
Reactor模型
-
Reactor单线程模型
-
Reactor多线程模型
- MainReactor主线程
- 单个线程,负责接收客户端连接
- SubReactor线程池
- 负责事件检测、I/O操作
- 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等高性能网络框架中。