单Reactor模式
- 单Reactor需要响应连接和读写事件,单线程处理任务较多
- 单Reactor连接和读写事件放在一块处理,会互相影响,而且本身读写事件是一个比较耗时的操作,当一个读写事件处理事件太长,那么势必会影响下一个连接事件的处理,影响用户连接,这是个非常不友好的事情,很影响体验。
主从Reactor模式
- 主从Reactor将会使用两个Reactor,主Reactor响应连接事件,从Reactor响应读写事件
- 主Reactor的selector只关注连接事件,接受到一个连接后,将通道注册到从Reactor的selector上,这样连接和读写事件互不影响
- 这里会涉及到两个selector, 主Reactor线程扫描serverSocketChannel的连接事件,接收到后交给Acceptor处理,Acceptor会得到一个socketChannel,然后注册到从Reactor的selector上,从Reactor线程扫描处理所有socketChannel的读写事件