Tomcat 架构体系

整体流程

浏览器发送请求到Http服务器,Http服务器将请求封装为Request,然后去Servlet服务器,Servlet服务器根据Request去找到需要去那个Servlet执行业务处理

Tomcat 架构体系_第1张图片
Tomcat整体执行流程

简介

Tomcat 设计了两个核心组件Connector(连接器)和Container(容器)和实现来完成Tomcat的核心功能


Connector(连接器):对应Http服务器,负责与客户端建立连接,接收客户端去请求封装ServletRequest,将服务端响应信息封装返回

Container(容器):对应Servlet服务器,通过ServletRequest中封装的信息,url对应的Servlet进行业务处理,将处理结果交给连接器进行处理

Tomcat 连接器组件 Coyote

Coyote是Tomcat的连接器组件,是与客户端建立连接,接收客户端的请求封装为ServletRequest,以及对于客户端响应进行封装返回给客户端

Tomcat 架构体系_第2张图片
Coyote组件工作原理

EndPoint:EndPoint是Coyote的通信节点,监听通信端口,是直接与客户端进行连接的,客户端通过Socket接收客户端请求和返回服务端的相应信息,是对传输层的实现,这一层实现了TCP/IP协议,来对于请求相应做相应的处理

Processor:这一层是对于Http的实现,Processor接收来自EndPoint的Socket信息,读取请求的输入流信息,将IO流中的Http请求头解析成Request,返回服务端的相应信息,就是将Response信息解析成Http响应头返回给客户端

ProtocolHandler:Coyote协议接口,通过EndPoint和Processor,实现针对具体协议的处理能力,Tomcat按照协议和I/O提供了六个实现类:AjpNioProtocol ,AjpAprProtocol, AjpNio2Protocol , Http11NioProtocol ,Http11Nio2Protocol ,Http11AprProtocol

Adapter:通过ProtocolHandler解析之后的Request解析成ServletRequest,在这里需要将Request封装为ServletRequest

Tomcat Servlet 容器Catalina

Catalina是整个Tomcat的核心功能,Tomcat在启动的时候就会初始化这个实例,通过加载 server.xml 来进行容器的创建各个容器

Tomcat 架构体系_第3张图片
Catalina整体结构

Catalina

负责解析Tomcat的配置文件(server.xml),以此来创建服务器Server组件并继续管理

Server

服务器标识整个CatalinaServlet容器以及其他组件,负责组装并启动Servlet引擎,Tomcat连接器,Server通过Ligecycle接口,提供了一种优雅的启动和关闭整个系统的方式

Service

服务是Server内部的组件,一个Server包含多个Service,它将若干个Connector组件绑定到一个Container

Container

容器,负责处理用户的Servlet请求,并返回对象给web用户的模块

Container组件的具体结构

Container组件有一下几种具体的组件,分别是Engine,Host,Context,Wrapper,这四种组件(容器)是父子关系,Tomcat通过一种分层结构,使得Servlet容器具有很好的灵活性

Engine

表示整个Catalina的Servlet引擎,用来管理多个虚拟站点,一个Service最多只能有一个Engine,但是一个引擎可以包含多个Host

Host

代表一个虚拟主机,或者说一个站点,可以给Tomcat配置多个虚拟主机地址,而一个虚拟主机下可包含多个Context

Context

一个Context表示一个web应用程序,一个Context可以包含多个Wrapper

Wrapper

表示一个Servlet,Wrappe作为容器中的最底层不能包含子容器

你可能感兴趣的:(Tomcat 架构体系)