Netty(一) Reactor 线程模型

什么是Reactor模型

Reactor模式含义为反应堆模式,专门用于处理请求的模式,它基于IO多路复用和事件驱动。
通过1个或多个线程接收请求,然后将请求转发至其他工作线程进行业务处理。Reactor模式适用于高并发场景,替代传统的多线程模式,提升系统的资源,提升吞吐量;

处理并发请求的技术历史

单线程处理
一个线程处理请求,后续请求排队阻塞,等前一个请求处理完才能处理后续请求连接

1个连接,1个线程
每来一个连接,就分配一个线程用于处理这个连接。由于资源限制,且频繁创建线程的消耗,引入了线程池对线程资源做管理;当线程池的线程资源用尽后,后续连接也只能阻塞等待

Reactor模式
事件驱动、多路复用的模式,处理并发连接请求

多路复用和事件驱动

多路复用指的是,通过使用1个或者几个线程,处理多个TCP连接;
事件驱动是指,将感兴趣的事件注册的到Reactor上,当发生事件后,对连接进行处理

Reactor 单线程模型

一个NIO线程处理所有连接的IO动作,并将连接转发至工作线程

相当于餐厅中只有1个人同时处理前台服务、下单、端菜、收钱等工作。
Netty(一) Reactor 线程模型

Reactor 多线程模型

多线程模型是由1个NIO线程专门处理连接,由1组线程处理IO动作并转发给工作线程

Netty(一) Reactor 线程模型

Reactor 主从多线程模型

多线程模型的缺点是,并发连接特别多的情况下,1个NIO线程难以支撑大量并发连接。就像1个前台,无法应对大量的服务员。

主从多线程模型是1组NIO线程处理连接,1组NIO线程处理IO动作并转发给工作线程
Netty(一) Reactor 线程模型