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教育学习笔记----------------------

原文地址:https://www.cnblogs.com/tianhaichao/p/12664956.html