Tomcat架构学习
1、Tomcat的两个核心功能:
处理Socket连接,负责网络字节流与Request和Response对象的转化。
加载和管理Servlet,以及处理具体Request请求。
Tomct设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责对内处理。
单独的连接器或者容器都不能对外提供服务,需要把他们组装起来才能工作,组装后这个整体叫做Service组件。
2、连接器需要完成3个功能:
网络通信。
应用层协议解析。
Tomcat Request/Response与Servlet Request/Response转换。
Tomcat分别提供了3个组件来完成对应功能,EndPoint、Processor、Adapter。
组件之间通过抽象接口交互。这样做的一个好处就是封装变化。
EndPoint负责提供字节流给Processor,Processor负责提供Tomcat Request给Adapter,Adapter负责提供Servlet Request给容器。
由于I/O模型和应用层协议可以自由组合,比如NIO+HTTP,NIO2+AJP。Tomcat将网络通信和引用层协议解析放在一起考虑,设计了ProtocolHandler接口封装这两种变化。
连接器详细组件图:
3、容器
Tomcat设计了4种容器,Engine、Host、Context、Wrapper,这4种容器是父子关系,关系图如下:
Context 表示一个 Web 应用程序;Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。
4、请求在Tomcat组件间的流转
5、
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!