Tomcat的系统架构与设计模式
Tomcat总体设计
Tomcat总体结构
- Tomcat两个核心组件:Connector和Container;Connector组件可以被替换,一个Container选择对应过个Connector,二者构成一个Service;Server提供生存环境;
Connector负责对外交流,Container主要处理Connector接受的请求,主要处理内部事务(婚姻比喻很恰当) - Server提供一个接口让其他程序访问这个service集合,同时维护所包含的所有Service的生命周期,包括如何初始化、如何结束服务、如何找到别人访问的Service。
- Tomcat中组件的生命周期通过LifeCycle接口来控制的,组件只要继承这个接口并实现其中的方法可以统一被拥有它的组件控制了。
Connector组件
主要任务负责接收浏览器发过来的TCP连接请求,创建一个Request和Response对象分别用于和请求端交换数据,然后产生线程处理这个请求并把Request和Response对象传给处理这个请求的线程,处理这个请求的线程就是Container组件要做的事了。
Servlet容器Container
Container是容器的父接口,所有子容器都必须实现这个接口,Container容器的设计用的是典型的责任链的设计模式,由Engine、Host、Context和Wrapper四个组件构成。是增增递减的父子关系。
Tomcat中的设计模式
门面模式
主要用在在一个大系统中有多个子系统时,这时多个子系统肯定要相互通信,但是每个子系统又不能将自己的内部数据过多的暴露给其他系统,不然没有必要划分子系统。每个子系统设计成门面, ,访问通过这个门面。
观察者模式
也叫做发布-订阅模式,就是事件监听机制。
命令设计模式
主要作用就是封装命令,把发出命令的责任和执行命令的责任分开,也是一种功能的分工。不同模式可以对同一个命令做出不同的解释。
责任链设计模式
责任链模式就是很多对象由每个对象对其下家的引用而连接形成一条链,请求在这条链上传递,直到链上的某个对象处理请求,或者每个对象都可以处理请求,并传递给“下家”,知道终止链上每个对象都处理完。