reactor模型主要是为了高效处理网络IO中的连接、读、写事件
主要有三类角色,reactor用来分配事件、acceptor用来处理连接然后把请求转发给handler、handler用来处理读写请求
单线程Reactor模式
一个线程:
单线程:建立连接(Acceptor)、监听accept、read、write事件(Reactor)、处理事件(Handler)都只用一个单线程。
多线程Reactor模式
一个线程 + 一个线程池:
单线程:建立连接(Acceptor)和 监听accept、read、write事件(Reactor),复用一个线程。
工作线程池:处理事件(Handler),由一个工作线程池来执行业务逻辑,包括数据就绪后,用户态的数据读写。
主从Reactor模式
三个线程池:
主线程池:建立连接(Acceptor),并且将accept事件注册到从线程池。
从线程池:监听accept、read、write事件(Reactor),包括等待数据就绪时,内核态的数据I读写。
工作线程池:处理事件(Handler),由一个工作线程池来执行业务逻辑,包括数据就绪后,用户态的数据读写
redis6.0以下使用单reactor单线程模型,接收请求,读写和处理业务逻辑都在一个线程
6.0以后引入IO多线程把读写数据逻辑使用多线程处理