美文网首页
Tomcat 体系架构

Tomcat 体系架构

作者: minute_5 | 来源:发表于2019-09-25 14:40 被阅读0次

    架构分析

    虽然网上对于tomcat架构描述已经十分详细了,但在这里还是要先讲讲 架构

    总体设计

    Tomcat顶层架构.jpg
    先来看Connector和Container - 两个Tomcat的心脏:
    1. Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;
    2. Container用于封装和管理Servlet,以及具体处理Request请求;
    Service - 面向外界的连接体
    1. 主要结合Connector和Container,实现封装,向外提供功能
    2. 一个service只能有一个container,但可以有多个connector
    Server
    1. 掌控Service的生杀大权,管理整个tomcat生命周期

    请求流程

    请求进入tomcat,经由Service交付到Connector,Connector将接收的请求封装为Request和Response,然后讲封装后的数据传递到Container处理,处理完成后返回Connector,通过Socket将结果返还给客户端。

    Tomcat连接示意图.jpg

    Connector

    Connector最底层使用的是(Tcp/Ip)Socket来进行连接的,Request和Response是按照HTTP协议来封装的。

    Connector结构图.jpg
    1. 通过不同类型的ProtocolHandler,Connector可以处理类型的连接请求,比如socket、nio等连接
    2. 每个ProtocolHandler都包含了三个组件:Endpoint、Processor、Adapter
    3. Endpoint实现TCP/IP协议,Processor实现HTTP协议的并将Endpoint接收到的Socket封装成Request,Adapter将Request适配大宋Container进行具体的处理
    4. 在Endpoint中,其抽象实现AbstractEndpoint里包含Acceptor(监听请求)和AsyncTimeout(检查异步Request的超时)两个内部类和Handler(处理接收到的Socket,并调用Processor进行处理)接口。

    Container

    管理Servlet,处理Request请求

    Container结构图.jpg
    1. Engine可以管理多个主机,一个Service最多只能有一个Engine;
    2. Host是虚拟主机,通过配置Host就可以添加多台主机;
    3. Context就意味着一个WEB应用程序;
    4. Wrapper是Tomcat对Servlet的一层封装;
    Container处理请求的方式 - 管道流与阀门
    1. 像普通的责任链设计模式一样,上一个处理者将处理过的请求移交到下一个继续处理。
    2. Pipeline-Valve与责任链模式存在一些差异:
      1. 每一个Pipeline都有一个特定的Valve,这个Valve处于责任链的末端
      2. 上面讲的四个容器都对应有自己特定的Valve:StandardEngineValve、StandardHostValve、StandardContextValve、StandardWrapperValve。
      3. 在这个特定的Valve中会调用下层级的管道,比如:EnginePipeline1 -> EnginePipeline2 -> StandardEngineValve(调用下级Pipeline) -> HostValve1 -> ... -> StandardHostValve -> ... -> StandardWrapperValve
      4. 当执行到最后一个Pipeline的特定Valve时,比如这里的StandardWrapperValve,会在StandardWrapperValve中创建FilterChain,其包含了配置的与请求相匹配的Filter和Servlet,并调用其doFilter方法来处理请求,其doFilter方法会依次调用所有的Filter的doFilter方法和Servlet的service方法,从而完成请求的处理,然后将结果返回给Connector,返还给客户端。

    相关文章

      网友评论

          本文标题:Tomcat 体系架构

          本文链接:https://www.haomeiwen.com/subject/pngmyctx.html