本文章主要是为了回顾、梳理一下Tomcat的知识点,下面主要从5部分介绍Tomcat,包括:Tomcat的主要组成部分、Tomcat的主要配置详解、手写一个简单的Tomcat、Tomcat的类加载机制以及Tomcat的性能优化
1. 前言
在我们了解Tomcat之前,可以先了解一下浏览器访问服务器的流程,如下图
我们使⽤浏览器向某⼀个⽹站发起请求,发出的是Http/Https请求,那么在远程,服务器接收到这个请求 之后,会调⽤具体的程序(Java类)进⾏处理,往往不同的请求由不同的Java类完成处理,上图中的服务器我们可以看成是一个Tomcat,有图可以看出他做了几件重要的事:
a、接受请求并与建立通信连接
b、执行请求并返回数据
Tomcat请求处理大致的过程:
说明:
- http服务器负责和客户端浏览器进行交互,进行socket通信,将字节流和Request/response和ServletRequest/ServletResponse对象进行转换
- servlet容器进行实际的业务处理
2.tomcat的组成部分
tomcat设计了两个核心的组件连接器(Connector)和容器(Container)来完成tomcat的两大核心功能
- 连接器:负责对外的交流:处理Socket连接,负责网络字节流与Request和Response对象的转换
- 容器:负责内部处理,加载和管理Servlet,以及处理具体的Request请求
2.1 tomcat连接器组件Coyote
Coyote是tomcat中连接器的组件名称,是对外的接口,客户端通过Coyote与服务器建立连接、发送请求并接受响应
(1)Coyote 封装了底层的⽹络通信(Socket 请求及响应处理)
(2)Coyote 使Catalina 容器(容器组件)与具体的请求协议及IO操作⽅式完全解耦
(3)Coyote 将Socket 输⼊转换封装为 Request 对象,进⼀步封装后交由Catalina 容器进⾏处理,处 理请求完成后, Catalina 通过Coyote 提供的Response 对象将结果写⼊输出流
(4)Coyote 负责的是具体协议(应⽤层)和IO(传输层)相关内容
简单了解一下Tomcat支持的应用层协议和I/O模型