Tomcat - Tomcat的套娃式架构设计初探

简介: Tomcat - Tomcat的套娃式架构设计初探

20200524232834382.png


Tomcat的主要功能


20200524233759536.png核心功能: http服务器和servlet 容器


Http服务器功能 : Socket通信(TCP/IP)、解析HTTP报文


Servlet容器功能 : 实现了Servlet规范 , 有多个Servlet(自带Servlet + 自定义Servlet),Servlet处理具体的业务


Tomcat的架构初探


刚才说了tomcat核心功能有两个 : http服务器和Servlet 容器。 那tomcat为了实现如上两个核心功能又是怎样架构的呢?

为了实现上面的功能,tomcat封装出了很多组件 ,这些组件共同组成了Tomcat的架构。



20200524234428508.png


进一步分析一下

我们既然说了tomcat的两个核心功能,HTTP和Servlet , 具体在架构中对应的部分是哪些呢?

HTTP------> Connector

Servlet --------> Container


Connector 组件 -Coyote

Connector 组件 在tomcat中,有个专门的名称,叫 Coyote ,专门处理HTTP服务器功能

Coyote的组成

我们把Connector组件放大来看一下

20200526062637211.png


  • EndPoint 组件进行Socket通信,处理TCP请求
  • Processor 组件解析HTTP报文,处理HTTP请求

这两个组件被称为 ProtocolHandler


HTTP请求 都是处理的Request, 而 Catalina 实现了Servlet规范,主要处理的是ServletRequest请求,所以这俩没法直接交互,因此才有了Adapter 组件,用来转换Request 和 ServletRequest


顺便说一下 AJP,这个是早期tomcat为了继承Apache的静态资源服务 的时候使用的协议,(Tomcat更擅长处理动态资源)


Container 组件 -Catalina

Container 组件的主要功能是完成Servlet容器功能, 也有个专门的名称叫 Catalina

Catalina 的组成



20200526063442690.png


Engine&Host: Engine组件(引擎) 是Servlet容器Catalina的核心,它支持在其下定义多个虚拟主机(Host) , 虚拟主机允许Tomcat引擎在将配置在一天主机上的多个域名(比如www.artisan.com , www.art.com) 分割开来互不干扰


Context: 每个虚拟主机又可以支持多个web应用部署在它下边,这就是我们常说的上下文Context对象. 上下文使用由Servlet规范中指定的Web应用程序格式表示,不论是压缩过的war包还是未压缩的目录形式


Wrapper: 在上下文中又可以部署多个Servlet ,并且每个Servlet都会被一个包装组件(Wrapper)所包含 (一个wrapper对应一个Servlet)


server-service-connector/container-engine-host-context-wrapper


除了Connector组件和Container组件,Tomcat其实还定义了很多组件来工作


(server-service-connector/container-engine-host-context-wrapper)

这些组件采用一层一层的设计方式(套娃式) 。 如果一个组件包含了其他组件,那么这个组件也称之为容器。

瞅一瞅俄罗斯套娃 哈哈

20200526064332597.png


总体架构预览


说了这多,汇总如下20200525000004623.png


相关文章
|
8月前
|
设计模式 Java 应用服务中间件
Tomcat 架构原理解析到设计借鉴
Tomcat 架构原理解析到设计借鉴
340 0
|
8月前
|
设计模式 Java 应用服务中间件
Tomcat 架构原理解析到架构设计借鉴
Tomcat 架构原理解析到架构设计借鉴
148 0
|
8月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
8月前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
116 0
|
5月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
3月前
|
前端开发 Java 应用服务中间件
21张图解析Tomcat运行原理与架构全貌
【10月更文挑战第2天】本文通过21张图详细解析了Tomcat的运行原理与架构。Tomcat作为Java Web开发中最流行的Web服务器之一,其架构设计精妙。文章首先介绍了Tomcat的基本组件:Connector(连接器)负责网络通信,Container(容器)处理业务逻辑。连接器内部包括EndPoint、Processor和Adapter等组件,分别处理通信、协议解析和请求封装。容器采用多级结构(Engine、Host、Context、Wrapper),并通过Mapper组件进行请求路由。文章还探讨了Tomcat的生命周期管理、启动与停止机制,并通过源码分析展示了请求处理流程。
|
8月前
|
存储 负载均衡 NoSQL
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
【分布式技术架构】「Tomcat技术专题」 探索Tomcat集群架构原理和开发分析指南
159 1
|
8月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
331 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
8月前
|
前端开发 Java 应用服务中间件
架构篇:Tomcat 高层组件构建一个商业帝国
架构篇:Tomcat 高层组件构建一个商业帝国
342 6
|
8月前
|
XML 应用服务中间件 数据格式
Tomcat - Tomcat套娃式架构与配置文件的对应关系解读
Tomcat - Tomcat套娃式架构与配置文件的对应关系解读
48 1