• Tomcat学习之体系架构


    一 .tomcat身份:

      1. 因为tomcat具有接收并处理http请求的能力,所以tomcat是http服务器。

      2.因为tomcat满足servlet接口和协议,所以tomcat也被称为servlet服务器。

    二.tomcat系统架构:

      为了满足上面的两个身份,tomcat主要功能分为连接器和容器,连接器(connector)用来接收网络层传输的数据,并进行解析后发送给容器container,container收到connector传过来的request对象后定位servlet容器,执行请求,做出响应返回给connector,connector将response对象转成满足http格式的数据包发送给浏览器响应。

      tomcat的connector是通过coyote来实现的,容器组件是通过catalina组件实现的。一个tomcat容器只有一个catalina容器,可以由多个coyote同时提供通信服务。

    三.Tomcat Coyote:
       coyote⽀持的 IO模型与协议
      在 8.0 之前 ,Tomcat 默认采⽤的I/O⽅式为 BIO,之后改为 NIO。 ⽆论 NIO、NIO2 还是 APR, 在性能⽅⾯均优于以往的BIO。 如果采⽤APR, 甚⾄可以达到 Apache HTTP Server 的影响性能。
    Coyote 组件及作⽤

     四.tomcat catalina

      从另⼀个⻆度来说,Tomcat 本质上就是⼀款 Servlet 容器, 因为 Catalina 才是 Tomcat 的核⼼ , 其他模块都是为Catalina 提供⽀撑的。 ⽐如 : 通过 Coyote 模块提供链接通Jasper模块提供 JSP 引擎,Naming 提供JNDI 服务,Juli 提供⽇志服务。

    tomcat容器在启动的时候就会创建一个catalina实例,catalina实例则通过读取server.xml文件创建并管理一个server实例,server实例创建并管理多个服务(service),每个服务可以有多个connector和一个container容器 。

    Catalina:
      负责解析Tomcat的配置⽂件(server.xml) , 以此来创建服务器Server组件并进⾏管理
    Server:
      服务器表示整个Catalina Servlet容器以及其它组件,负责组装并启动Servlaet引擎,Tomcat连接器。Server通过实现Lifecycle接⼝,提供了⼀种优雅的启动和关闭整个系统的⽅式
    Service:
      服务是Server内部的组件,⼀个Server包含多个Service。它将若⼲个Connector组件绑定到⼀个Container
    Container组件下有⼏种具体的组件,分别是Engine、Host、Context和Wrapper。这4种组件(容器)是⽗⼦关系。Tomcat通过⼀种分层的架构,使得Servlet容器具有很好的灵活性。
     
    Engine
      表示整个Catalina的Servlet引擎,⽤来管理多个虚拟站点,⼀个Service最多只能有⼀个Engine,但是⼀个引擎可包含多个Host
    Host
      代表⼀个虚拟主机,或者说⼀个站点,可以给Tomcat配置多个虚拟主机地址,⽽⼀个虚拟主机下可包含多个ContextContext表示⼀个Web应⽤程序,⼀个Web应⽤可包含多个Wrapper。
    Wrapper
      表示⼀个Servlet,Wrapper 作为容器中的最底层,不能包含⼦容器

    具体配置可以在config/server.xml中配置。请参见下一篇文章。

    五.总结:

      tomcat容器内部提供支持servlet规范container容器,对外提供了支持http协议和AJP协议的请求connector连接器。tomcat主要目的是对外提供满足servlet规范的服务支持。tomcat启动的时会创建一个Catalina实例,用来解析config/server.xml文件并创建一个server容器对外提供service服务接口。

      tomcat通过server容器可以同时管理多个service服务,并且为每个服务提供多个connector支持和一个container容器,每个容器又分层管理着(1个)engine【整个Catalina的Servlet引擎,⽤来管理多个虚拟站点,可以使用<Cluster>标签配置tomcat集群】->(多个)host【虚拟主机】->(多个)context【我们部署在tomcat中的web应用】->(多个)wrapper【我们应用程序中一个servlet的service方法】

    -------------------------------部分内容摘自lagou教育学习笔记----------------------

  • 相关阅读:
    kafka----简单的脚本命令重点
    kafka简单学习----遇到的问题
    nc简单使用
    kafka-sparkstreaming---学习1
    sparkStream---1
    装系统
    spark入门备忘---1
    linux---学习3
    MySql-5.7.17-20解压缩版安装配置
    springboot动态定时任务
  • 原文地址:https://www.cnblogs.com/tianhaichao/p/12664956.html
Copyright © 2020-2023  润新知