Tomcat 服务器设计流程图
2020-12-28 11:15:50 0 举报
Tomcat 服务器从基础到最终设计模型
作者其他创作
大纲/内容
Wrapper 01
Wrapper ......
Wrapper 00N
Connector
+ start()+ stop()
Server:一个服务(Servlet 容器)包含多个链接器(Connector)和处理器(Engine)Connector:用于打开Socket,监听客户端请求,返回响应数据Engine:负责具体的请求处理的Servlet引擎Connector、Engine分别拥有自己的start()和stop()方法来加载和释放自己维护的资源信息
链接和业务分离的服务器设计
Lifecycle接口类
服务器接收客户端请求,完成业务处理,将处理结果返回给客户端start() --> 打开Socket链接并监听服务器端口 --> 接收客户端请求 --> 处理业务数据 --> 响应数据处理结果 --> stop()
Host
Web应用部署到虚拟主机上
Context
最简单的服务器设计
完整的Web应用服务器架构
缺陷:链接的打开与业务的处理耦合度太高,扩展性太差。比如:难以扩展并适配多种网络协议(Http/AJP等等)
Engine
其他协议请求:xx://xxapp.edu:9999/list.html
ConnectorforHttp
增加组件:目前环境已经搭建完成,下一步需要在Engine容器中放入我们的Web应用(Context),保证业务逻辑可以被相应的Web应用处理
Server
缺陷:无法知晓不同网络协议请求的链接由哪个处理器去处理,需要去建立一个Connector和Engine的映射关系
建立Connector和Engine的映射关系
Host 001
Host 002
Host 003
Engine 01
Tomcat的生命周期(Lifecycle)
其他协议请求:xx://xxapp.edu:9999/add.html
Engine 03
ConnectorforOther Protocol
放入Web应用的服务器架构
容器的概念:容器代表一类组件,作用就是用于处理客户端的请求并返回响应数据,且容器是可以添加并维护子容器的。比如Engine、Host、Context、Wrapper等都是容器,都继承自Container。此外,容器的另一个重要功能是:后台异步处理。比如,Tomcat对web应用文件变更的定期扫描。Container定义了backgroundProcess()方法,容器的基础抽象类ContainerBase确保在启动组件的同时异步启动后台处理,保证了各个组件自动调用backgroundProcess(),而不需要另起线程调用
Http请求:http://myapp.com:8080/add.html
Host:表示虚拟主机。一个虚拟主机可以包含多个Context,即一个虚拟主机上可以运行多个Web应用。Tomcat的设计中,一个Engine可以包含Host,又可以包含Context,这由具体的Engine实现决定。默认实现StandardEngine只包含Host。
放入Web应用
打开链接与业务处理功能的分离
Server:一个Server包含多个Service,多个Service之间相互独立且共享一个JVM和系统类库Service:一个Service负责维护多个Connector和一个Engine之间的映射,这样保证了多个Connector请求可以被指定的Engine处理
Http请求:http://myapp.com:8080/list.html
增加组件:一个Web应用可以包含多个Servlet来处理不同链接的请求,因此我们还需要定义Servlet的概念,即Tomcat中的Wrapper
Http请求:http://myapp.com:8080/index.html
Service
打开链接和处理业务分离的服务器设计
服务器请求整体流程图
Engine 02
增加组件:每个Web应用都需要部署到一个虚拟主机上,每个主机上可能有一个或者多个Web应用。下一步我们还要增加虚拟主机(Host)
Lifecycle
+ init()+ start()+ stop()+ destroy()+ addLifecycleListener()+ removeLifecycleListener()
+ start()
+ stop()
其他协议请求:xx://xxapp.edu:9999/index.html
Wrapper
放入虚拟主机的服务器架构
Context表示上下文,代表一个Web应用
0 条评论
回复 删除
下一页