Netty-6、Netty 线程模型
1 Proactor和Reactor Proactor和Reactor是两种经典的多路复用I/O模型,主要用于在高并发、高吞吐量的环境中进行I/O处理。 I/O多路复用机制都依赖于一个事件分发器,事件分离器把接收到的客户事件分发到不同的事件处理器中,如下图: 1.1 select,poll,epoll 在操作系统级别select,poll,epoll是3个常用的I/O多路复用机制,简单了解一下将有助于我们理解Proactor和Reactor。 1.1.1 select select的原理如下: 用户程序发起读操作后,将阻塞查询读数据是否可用,直到内核准备好数据后,用户程序才会真正的读取数据。 poll与select的原理相似,用户程序都要阻塞查询事件是否就绪,但poll没有最大文件描述符的限制。 1.1.2 epoll epoll是select和poll的改进,原理图如下: epoll使用“事件”的方式通知用户程序数据就绪,并且使用内存拷贝的方式使用户程序直接读取内核准备好的数据,不用再读取数据 1.2 Proactor Proactor是一个异步I/O的多路复用模型,原理图如下: 用户发起IO操作到事件分离器 事件分离器通知操作系统进行IO操作 操作系统将数据存放到数据缓存区 操作系统通知分发器IO完成 分离器将事件分发至相应的事件处理器