下面再来看看Tomcat是如何使用NIO来构架Connector这块的。后端
先看看Tomcat Connector这块的类图:多线程
其中:线程
NioEndpoint负责组装各部件队列
Acceptor负责监听新链接,并把链接交给Pollerio
Poller负责监听所管辖的channel队列,并把请求交给SocketProcessor处理select
SocketProcessor负责数据处理,并把请求传递给后端业务处理模块sso
在整个服务端处理请求的过程能够分为三个阶段,时序图以下所示:请求
阶段一:监听并创建链接channel
这一阶段主要是Acceptor监听新链接,并轮询取一个Poller ,把链接交付给Pollerim
阶段二: 监听客户端的请求
这一过程主要是让每一个Poller监听所管辖的channel队列,select到新请求后交付给SocketProcessor处理
阶段三:处理请求
这一过程就是从多线程执行SocketProcessor,作数据和业务处理
因而乎咱们发现抛开具体代码细节,Tomcat和Jetty在NIO的使用方面是很是一致的,采用的模式依然是下图: