Reference: http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf
Reactor是常见的网络NIO模型,例如Netty基于此模式设计,适合服务器高并发的场景。常常配合高性能的IO多路复用实现,如Kqueue和epoll。
与Proactor的对比见
连接
这里的Handle对应的是listenfd。
特殊的Handler名为Acceptor。Acceptor本身负责监听特定的端口(如80),用于创建socket连接。Acceptor特殊在Handler能够注册新的Handler。
监听->处理accept+create->注册->响应
IO
这里的Handle对应的是connfd。
监听->处理recv+write->响应
Reference: https://cloud.tencent.com/developer/article/1488120
单Reactor单线程模型(Redis)
Dispatcher和Handler共用同一个线程
单Reactor多线程模型
Dispatcher单独线程,Handler线程池
主从Reactor多线程模型(Netty)
main Dispatcher负责Acceptor部分,将handler注册到sub Dispatcher
sub Dispatcher负责Handler部分,专门处理IO事件