Tomcat三部曲之上(架构浅析)

前言

本文以Tomcat 8.5.35版本来进行分析。

架构图

由上图可以看出,一个catalina服务器,包含了多个service,而每个service中包含了多个connector一个container,其中还有一些其他的组件。而connector和container是tomcat容器中最为核心的两个组件。connector用来接受封装请求,container用于具体处理请求后的处理逻辑。

先来看一下container容器中的主要组件:


每一个container中都只含有一个engine(处理引擎),每一个engine里面包含多个host,一个host中可以包含多个context,每个context有包含多个wrapper(封装着一个servlet)

对于connector来说,请求最终都是交给ProtocolHandler来进行处理,tomcat默认的ProtocolHandler为Http11NioProtocol。其中,EndPoint、Processor、Adapter是ProtocolHandler的核心处理组件。

  • EndPoint用于管理socket连接
  • Processor 用来处理网络协议的
  • Adapter 将请求适配到Servlet容器进行具体的处理

当服务器启动时,一条请求的主要流程如下:

  1. 进入ProtocolHandler中的EndPoint中的Acceptor接受线程,经过处理注册到Poller线程中(该线程绑定了一个Selector)
  2. Poller线程调用Handler来处理不同状态的socket。其中Handler会去获取一个Processor去处理解析协议
  3. Processor将处理后的数据交给Adapter进行适配,从而交给Container做进一步的处理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天的主题还是关于关键词!恳请老师指正我的问题,我觉得在学习期间多暴露问题,是进步的开始,我估计有很多错误❌或需要...
    _史鹏飞_阅读 571评论 4 5
  • 窗外的鸟,有张嫩黄的嘴, 它鼓着眼,低低地飞。 那么多山,那么多水, 跋涉而来, 我好奇:它从不慌张? 从一座城,...
    何梦君阅读 334评论 0 2
  • 呵呵
    2fd3b2a9e02f阅读 210评论 0 1
  • 娶一个好女人旺三代! 娶一个衰女人败六代! 比尔.盖茨坚定的认为:女人决定了一个家族的未来! 【人生四不要】 1、...
    迷糊樱子阅读 457评论 0 0

友情链接更多精彩内容