概述
- Reactor 线程模型主要可以分成以下几种
-
单 Reactor 单线程
-
单 Reactor 多线程
-
多 Reactor 多线程
-
单 Reactor 单线程
-
特点:
- 单个线程完成建立连接、处理请求、回送请求的所有工作
-
缺点:
- 无法利用多核CPU
- 由于是单线程的,所以如果某一次的处理请求耗时较大,将会阻塞很长时间
-
优点:
- 单线程运行,不需要加锁,所有操作都是串行
-
应用: redis 线程模型
单 Reactor 多线程
- 特点:
- Reactor 为主线程,专门处理产生事件的 socket,并将其分发到对应的处理器中
- 对应的处理器将会采用线程池的实现,进行多线程处理
- 缺点:
-
存在数据安全问题,多线程
-
主线程需要处理所有的网络事件,在并发量较大的时候,很容易造成阻塞!
-
多 Reactor 多线程
- 特点:
- 主线程仅仅用来建立连接,建立连接后将 socket 绑定到其他线程,而后主线程就不管了,后续的网络IO 事件将由socket 所绑定的线程进行处理
- 应用:
-
Nginx 多 Reactor 多进程
-
Netty 多 Reactor 多线程
-