Tomcat(一) 系统架构

一、Tomcat系统架构-连接器

tomcat设计了两个核心组件:连接器Connector, 容器Container;连接负责对外交流,容器负责内部处理;

连接器的基本功能:
1、监听网络端口
2、接收网络请求连接
3、将请求解析转换为 Tomcat Request 对象
4、将Tomcat Request 转换为 Servlet Request
**5、调用Servlet 获得 Servlet Response **
6、将获得的结果转换,响应返回给前端

根据上述功能,Tomcat 就把它抽象成了三个核心类,EndPoint 、Process、Adapter 来分别处理

  • 网络通信
  • 应用层协议解析
  • Tomcat Request 到 Servlet的转换

组件之间通过接口进行交互,封装变化,将系统中经常变化的部分,和稳定的部分进行隔离;有助于增加复用性,并降低系统的耦合度;
其交互处理的逻辑如下:
![image.png](https://img-blog.csdnimg.cn/img_convert/78c875720ab2d42095a9b346a42683de.png#clientId=u604cc54a-cf5a-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=266&id=u10206821&margin=[object Object]&name=image.png&originHeight=532&originWidth=1450&originalType=binary&ratio=1&rotation=0&showTitle=false&size=208315&status=done&style=none&taskId=uab577043-6cae-4a92-9ed6-fa2cfa67b4a&title=&width=725)
1.1 ProtocolHandler 组件
这个组件内部包含两个组件,E和 Processor;
**EndPoint: **负责通信的端点,是具体的Socket接收和发送的处理器,该组件是实现Tcp/Ip 协议的(内部有个线程池处理请求)
**Processor:**用来实现 HTTP 协议,Processor 接收来自 EndPoint 的 Socket,读取字节流解析成 Tomcat Request 和Response 对象,并通过 Adapter 将其提交到容器处理,Processor 是对应用层协议的抽象。

EndPoint 负责底层 Socket通信,Proccesor 负责应用层协议解析。连接器通过适配器 Adapter 转换调用容器。

二、Tomcat系统架构-容器

容器的层次结构,Tomcat设计了4种容器,分别是Engin 、Host、Context 、Wapper

他们是一个包含关系。Tomcat 通过一种分层的架构,使得 Servlet 容器具有很好的灵活性。

  • Context 表示一个 Web 应用程序;
  • Wrapper 表示一个 Servlet,一个 Web 应用程序中可能会有多个 Servlet;
  • Host 代表的是一个虚拟主机,或者说一个站点,可以给 Tomcat 配置多个虚拟主机地址,而一个虚拟主机下可以部署多个 Web 应用程序;
  • Engine 表示引擎,用来管理多个虚拟站点,一个 Service 最多只能有一个 Engine。


上图展示了,根据Url是如何找到对应的wapper进行处理;

连接器中Adapter 会调用容器的 Service 方法来执行 Servlet,最先拿到请求的是 Engine 容器,Engine 容器对请求做一些处理后,会把请求传给自己子容器 Host 继续处理,依次类推,最后这个请求会传给 Wrapper 容器,Wrapper 会调用最终的 Servlet 来处理。那么这个调用过程具体是怎么实现的呢?
答案是使用 Pipeline-Valve 管道。

  • Pipeline-Valve 是责任链模式,责任链模式是指在一个请求处理的过程中有很多处理者依次对请求进行处理,每个处理者负责做自己相应的处理,处理完之后将再调用下一个处理者继续处理。


在连接器里 会有一个触发调用 Engine的一个 value,然后以责任链的模式不断传递,Wrapper 容器的最后一个 Valve 会创建一个 Filter 链,并调用 doFilter() 方法,最终会调到 Servlet 的 service 方法

参考

极客时间-深入理解Tomcat

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值