Tomcat源码分析:3—— 整体架构的预览

整体架构的预览

参考书:Tomcat内核设计剖析

3.1.1 Server

Server是最顶级的组件,她代表Tomcat的运行实例,在一个JVM中只会包含一个Server。

3.1.2Service

Service是服务的抽象,它代表请求从接受到处理的所有组件的集合。一个Server中可以有多个Service

3.1.3 Connector

Connector是用来接受客户端连接,并接受消息报文,消息报文经由它解析后送往容器中处理。

目前Tomcat包含两种协议的Connector:HTTP,AJP。

3.1.4 Engine

Tomcat内部有4个级别的容器,分别是Engine,Host,Context和Wrapper。Wrapper是最小的容器了。

Engine中拥有一下组件

Host容器。

Listener:监听器。

AccessLog:客户端的访问日志。

Cluster:它提供集群功能,可以将Engine容器需要共享的数据同步到集群中的其他Tomcat实例上。

Pipeline:请求处理管道

Realm:提供了Engine容器级别的用户-密码-权限的数据对象,配合资源认证模块的使用。

3.1.5 Host

Host包括的组件与Engine一样

多了个Context容器

3.1.6Context

Context 包括了

Listener,AccessLog,Pipeline,Realm

Loader:Web应用加载器,用于加载Web应用的资源

Manager: 会话管理器,用于管里对应Web容器的会话。(啥是Web容器的会话?)

NamingResource:命名资源,负责将Tomcat配置文件的server.xml和Web应用的context.xml资源和属性映射到内存中

Mapper:Servlet映射器,它属于Context内部的路由映射器,只负责该Context容器的路由导航

Wrapper容器

3.1.7 Wrapper

一个Wrapper对应一个Servlet。

Wrapper包含一下组件

Servlet组件。

ServletPool:Servlet对象池

Pipeline:请求管道。

3.2 请求处理的整体过程

————来自网图

Tomcat源码分析:3—— 整体架构的预览_第1张图片

这个图假定的是Tomcat使用的阻塞I/O模式接受客户端链接的。

1.客户端发出请求—>

2.Connector的接受器Acceptor接到请求—>

3.交给线程池Executor执行请求响应任务—>

4.Mapper组件根据HTTP协议请求行的URL属性值和请求头部的Host属性值匹配由哪个Host容器,哪个Context容器,哪个Wrapper容器 处理请求。这个过程就是根据请求从Tomcat中找到对应的Servlet,然后由路由的结果封装到Request对象中。—>

5.CoyoteAdaptor组件负责将Connector组件和Engine容器连接起来,把Request对象传入Engine容器中,调用它的管道。—>

6.然后就像洋葱一样,一层一层的拨开他的心。最后传入到了Wrapper容器,执行Wrapper容器对应的Servlet对象的处理方法,对请求进 行逻辑处理,最后返回给客户端。

这篇笔记只是总体地,大概地了解一下Tomcat的结构及处理请求的流程。后续笔记详解各个组件功能。

你可能感兴趣的:(Tomcat源码分析)