Tomcat NIO 基本架构

来源:互联网 发布:java接口中的静态方法 编辑:程序博客网 时间:2024/05/21 17:44

Tomcat NIO 基本架构图示

这里写图片描述

Tomcat Connector 的三大部分

  • Http11NioProtocol
  • Mapper
  • CoyoteAdapter

Http11NioProtocol

  • NioEndpoint
    • Acceptor
      • 1+线程(但并非线程池)
      • 接收连接请求封装成NioChannel,构造一个PollerEvent发送给Poller
    • Poller
      • 1+线程(但并非线程池)
      • 轮询PollerEvent队列消费消息,利用Selector对象轮询消费socket IO事件
    • Worker
      • 线程池,可以外部提供也可能内部创建,对应上图中的Executor
      • 将socket封装到一个SocketProcessor对象,在Worker线程池中执行该SocketProcessor处理逻辑
        • 从Http11ConnectionHandler中取出Http11NioProcessor,进而调用CoyoteAdapter逻辑
    • NioSelectorPool
  • Http11ConnectionHandler : 具体实现类 AbstractProtocal内部类 ConnetionHandler
    • Http11NioProcessor : 具体实现类 HttpNioProcessor

Mapper

类全路径org.apache.tomcat.util.http.mapper.Mapper。维护一个从Host到Wrapper的各级容器的快照。主要是为了当http request被解析后,能够将http request绑定到相应的servlet进行处理。

CoyoteAdapter

类全路径org.apache.catalina.connector.CoyoteAdapter。Tomcat Connector 初始化时会创建此对象并传递给 Http11NioProtocol 对象。
相关资料

Tomcat NIO 基本架构
omcat架构分析 (connector NIO 实现)