Tomcat的底层架构模型

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2021-03-13 06:53 被阅读0次

    上一篇 <<<SpringBoot常见面试问题
    下一篇 >>>Tomcat启动流程说明


    执行流程

    1、当我们的tomcat启动的时候,默认的情况下会创建两个Connector监听端口号,分别是为Http协议Connector8080监听端口号和AJP协议Connector8009监听端口号。
    2、Http协议Connector8080监听到了Http请求之后会采用Executor(线程池)处理请求,最终交给我们的Container(Engine)实现处理
    3、Container(Engine)处理完请求之后在交给我们的Connector连接器封装响应的结果集给客户端。

    核心配置

    <!--整个tomcat服务器,一个tomcat服务器只有一个server,管理tomcat所有组件-->
    <Server port="8105" shutdown="SHUTDOWN">
        <!--Server服务处理的一个业务逻辑,一个Server可以存在多个Service业务逻辑-->
        <Service name="Catalina">
            <!--线程池定义-->
            <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
            <!--核心组件:Connector连接器,主要作用监听请求与封装请求和响应,一个Service可以有多个Connector-->
            <!--Http协议的监听器-->
            <Connector executor="tomcatThreadPool" port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
            <!--AJP协议的监听器,以前可以做内部通讯和负载均衡,由于nginx的发展,现在基本上不用了-->
            <Connector port="8109" protocol="AJP/1.3" redirectPort="8443"/>
            <!--核心组件:Engine容器,作用是执行业务逻辑,一个Service只有一个Engine-->
            <Engine name="Catalina" defaultHost="localhost">
                <!--Host虚拟主机站点,Engine可以有多个Host-->
                <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
                    <!--每个host可以存在多个Context上下文路径访问-->
                    <Context docBase="/Users/jiangjinrong/Downloads/aaa" reloadable="true"/>
                    <!--还可以定义Wrapper,相当于servlet类-->
                </Host>
            </Engine>
        </Service>
    </Server>
    

    AJP协议与Http协议区别:

    Http协议超文本传输协议
    AJP协议Tomcat内部之间通讯协议,可以实现tomcat集群


    推荐阅读:
    <<<Tomcat启动流程说明
    <<<Tomcat8的四种部署方式
    <<<站在微服务架构对Tomcat进行性能调优
    <<<Tomcat的AJP连接器漏洞

    相关文章

      网友评论

        本文标题:Tomcat的底层架构模型

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