Netty线程模型
一、Reactor模型
Reactor模式,通过一个或多个输入同时传递给服务处理器的模式,服务器端程序处理传入的多个请求,并将它们同步分派到相应的处理线程, 因此Reactor模式也叫Dispatcher模式 。Reactor模式使用IO复用监听事件,收到事件后,分发给某个线程(进程),这点就是网络服务器高并发处理的关键。
1. 单Reactor单线程

存在问题:
- 性能问题:只有一个线程,无法完全发挥多核CPU的性能。Handler在处理某个连接上的业务时,整个进程无法处理其他连接事件,很容易导致性能瓶颈。
- 可靠性问题:线程意外终止或者进入死循环,会导致整个系统通信模块不可用,不能接收和处理外部消息,造成节点故障。
2. 单Reactor多线程

如果是处理请求事件,分发给给Handler之后真正的执行者是Worker线程池中的线程。
存在问题:
多线程数据共享和访问比较复杂, reactor处理所有事件的监听和响应。单线程运行的情况下,在高并发场景容易出现性能瓶颈。
3. 主从Reactor多线程

-
Reactor主线程负责接收所有的请求,并且处理Accept事件
-
Reactor子线程负责业务的处理,派发给不同的Handler进行处理
-
分发给给Handler之后真正的执行者是Worker线程池中的线程
优缺点:
-
编程复杂度较高(缺点)
-
这种模式也被叫做服务器的1+M+N 线程模式,即使用该模式开发的服务器包含一个连接建立线程 + M个IO线程 + N个业务处理线程。
- 连接建立线程可以有多个,1只是表示相对较少
二、Netty线程模型
Netty的线程模型主要基于主从Reactor多线程模式:

Boss线程主要监听accept事件,连接建立之后的业务处理由Worker线程处理(Handler)。
更进一步: