[Netty]- Reactor 实现
一. 各种 IO
BIO:Thread-Per-Connection
NIO:Reactor
AIO: Proactor
二. I/O 多路复用(技术术语:Reactor)
当多条连接共用一个阻塞对象后,进程只需要在一个阻塞对象上等待,而无需再轮训所有连接,常见的实现方式有 select,epoll,kqueue 等。
当某条连接有新的数据可以处理时,操作系统会通知进程,进程从阻塞状态返回,开始进行业务处理。
Reactor 是一种开发模式,Reactor 中文翻译为:反应堆。不是物理上的核反应堆,这儿代表的是:“事件反应”,可以理解为:“来一个事件我(Reactor)就有相应的反应”。Reactor 也可以叫 Dispatcher 模式:
Reactor 的数量可以变化:可以是一个 Reactor,也可以是多个 Reactor
资源池的数量可以变化:可以是单线程,也可以是多线程
Reactor 模式核心流程:
注册感兴趣的事件 -> 扫描是否有兴趣的事件发生 -> 事件发生后做出相应的处理
Reactor 三种模式:1. 单线程(单 Reactor 单线程), 2. 多线程(单 Reactor 多线程) 3. 主从多线程(多 Reactor 多线程)
评论