Tomcat


1. Tomcat 的本质(系统抽象)

Tomcat 本质是一个 基于 Servlet 规范的请求执行容器,其核心职责不是“运行 Web 应用”,而是完成以下五类系统功能:

1.1 五大核心子系统

子系统本质职责对应实现
网络接入子系统接收 TCP 连接与事件分发Endpoint / Acceptor / Poller
协议处理子系统HTTP / AJP 协议解析与编码Processor / ProtocolHandler
请求路由子系统URL → Servlet 定位Mapper
执行容器子系统Servlet / Filter 调用Container 体系
生命周期管理子系统组件统一初始化与控制Lifecycle
资源隔离子系统应用类加载隔离ClassLoader 体系

1.2 系统角色定位

Tomcat 在 Web 系统中承担:


2. 系统整体分层架构

Tomcat 的请求处理可抽象为标准服务器执行流水线:

Client  ↓Socket 接入层  ↓协议解析层  ↓请求路由层  ↓执行管线  ↓Servlet 容器  ↓响应编码

2.1 分层职责

核心组件职责
接入层Endpointsocket监听、连接管理
协议层ProcessorHTTP解析、请求对象构造
路由层MapperURL匹配容器
执行层Pipeline / FilterChain中间件处理
组件层Servlet业务执行
编码层Processor响应写回

3. 组件层级架构(容器模型)

Tomcat 使用分层容器组织应用。

Server  └─ Service        ├─ Connector        └─ Engine              └─ Host                    └─ Context                          └─ Wrapper

3.1 各层语义

含义系统意义
Server进程级运行实例顶层生命周期控制
Service请求处理域连接器与容器绑定
Engine虚拟主机调度域名级路由
Host虚拟主机多站点托管
ContextWeb应用应用隔离边界
WrapperServlet实例最终执行单元

3.2 设计模式

结构模式目的
容器层级组合模式统一组件管理
Pipeline责任链可扩展请求处理
Lifecycle模板方法统一生命周期
Adapter适配器协议与容器解耦

4. 请求执行模型(线程与事件)

Tomcat 默认采用 事件驱动 + 线程池执行模型

4.1 线程角色

线程职责
Acceptor接收 TCP 连接
Poller监听 IO 事件
Worker执行业务处理

4.2 执行流程

Socket连接   ↓Acceptor接收   ↓注册Selector   ↓Poller监听就绪   ↓Worker处理请求

4.3 I/O 模型

模型特点
BIO阻塞线程
NIO事件驱动
NIO2异步回调
APRNative性能优化

5. 请求路由与执行流水线

请求处理是一个多级函数映射:

(socket, protocol, host, path)      → servlet

5.1 URL映射过程

域名 → Engine路径前缀 → Host应用路径 → ContextServlet路径 → Wrapper

5.2 执行管线

Valve  ↓Filter  ↓Servlet

6. 生命周期管理系统

所有核心组件均实现 Lifecycle。

6.1 状态机

NEW → INITIALIZED → STARTING → STARTED → STOPPING → STOPPED → DESTROYED

6.2 生命周期传播

父容器控制子容器:

Server  → Service     → Engine        → Host           → Context

7. 类加载与应用隔离

Tomcat 通过 多层类加载器 实现应用隔离。

7.1 类加载结构

Bootstrap   ↓System   ↓Common   ↓Catalina   ↓Shared   ↓WebAppClassLoader

7.2 设计目标

7.3 双亲委派的可控破坏

WebAppClassLoader 可打破标准委派,原因:


8. Servlet 执行模型

Servlet 执行是容器驱动的函数调用:

service(request, response)

执行上下文:


9. JSP 编译系统

JSP 本质是 模板到 Java 的编译过程

9.1 编译阶段

JSP → Java → Class → Servlet

9.2 执行模式


10. 会话管理模型

Session 由 Context 内 Manager 管理。

10.1 数据结构

ConcurrentHashMap<SessionId, Session>

10.2 生命周期


11. 集群与扩展架构

Tomcat 不提供强一致分布式会话。

11.1 三种策略

策略特征
Session复制高开销
粘性会话负载不均
外部存储推荐方案

推荐架构:

LoadBalancer   ↓Stateless Tomcat   ↓Session Store (Redis)

12. 安全模型

安全控制层次:

1 网络连接控制2 认证授权3 传输加密4 应用隔离5 安全策略


13. 性能优化体系

13.1 网络层

13.2 线程模型

13.3 应用层


14. Tomcat 在现代架构中的位置

Browser   ↓CDN   ↓Reverse Proxy   ↓Tomcat   ↓Application   ↓Database

15. 技术演进方向

方向说明
阻塞 → 非阻塞NIO / Async Servlet
单体 → 云原生容器化部署
同步 → Reactive事件驱动
HTTP1 → HTTP3QUIC

16. 总结

Tomcat 本质不是 Web 服务器实现,而是:

一个协议驱动的组件执行操作系统。

其核心能力:

它提供的是:

一个可隔离、可扩展、可管理的 Web 组件运行时环境。


关联内容(自动生成)