Tomcat的整体架构
文章目录
架构设计
- Tomcat中只有一个Server,一个Server可以有多个Service,一个Service可以有多个Connector和一个Container;
- Server掌管着整个Tomcat的生死大权;
- Service 是对外提供服务的;
- Connector用于接受请求并将请求封装成Request和Response来具体处理;
- Container用于封装和管理Servlet,以及具体处理request请求;
Tomcat的两个重要组件
连接器(Connector)负责对外交流,建立Socket连接,读取并解析网络字节流,生成Request和Response对象并转发给容器。
容器(Container)负责内部处理,加载和管理Servlet,通过Response对象的输出流写入响应结果。
基础组件默认实现
接口 | 默认实现 | 阀值 |
---|---|---|
Server | StanderdServer | |
Service | StanderdService | |
Engine | StanderdEngine | StandardEngineValve |
Host | StanderdHost | StandardHostValve |
Context | StanderdContext | StandardContextValve |
StandardWrapper | StandardWrapperValve | |
Endpoint组件没有接口 但提供一个抽象类AbstractEndpoint |
<Connector protocol="HTTP/1.1"/> 使用NioEndpoint |
|
ProtocolHandler | <Connector protocol="HTTP/1.1"/> 使用Http11NioProtocol |
|
Processor | <Connector protocol="HTTP/1.1"/> 使用Http11Processor |
Connector基本结构
对应Connector中的三个组件就是:Endpoint、Processor、Adapter,其中 Endpoint和 Processor放在一起抽象成了 ProtocolHandler协议组件。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zrBMdeMG-1684648768852)(assets/image-20220721205552106.png)]
ProtocolHandler
ProtocolHandler负责传输层网络连接和应用层协议解析,由两个核心部件 Endpoint和 Processor具体做这两件事。
-
Tomcat的连接器主要支持两种协议:HTTP/1.1协议和AJP协议,实则还支持HTTP/2.0协议
-
还分别支持3种I/O方式:NIO、NIO2、APR
总结:两两组合就出现了很多实现类:Http11NioProtocol、Http11Nio2Protocol、Http11AprProtocol(已过期)、AjpNi