tomcat架构分析

1、Server,是tomcat中最顶层的容器是,代表着整个服务器,一个Server可以包含至少一个Service,用于具体提供服务。
2、Service主要包含两个部分:Connector和Container。 Tomcat 的心脏就是这两个组件,这两个组件的作用:Connector用于处理连接相关的事情,并提供Socket与Request和Response相关的转化;Container用于封装和管理Servlet,以及具体处理Request请求。
(webapp目录就是一个service,如果我想用多个service,没错就是创建自定义目录和webapp同级,然后修改server.xml文件即可)。
3、connector,多个connector 和一个container 就形成了一个 Service,有了 Service 就可以对外提供服务了,connector是tomcat和外部的连接,它实现了http协议,接收外界的请求,并把这些信息传递个container进行处理,container处理完成后再交给connector返回给客户端。
为什么connector是多个呢?因为container的作用是处理与外部的连接,通俗的来讲就是实现了http协议,而协议有多个版本,所以就出现了多个connector,还有一种专门处理apache反向代理的connector。
(这里的connector也涉及到了线程池的概念,tomcat有一个专门的组件executor负责管理线程,这儿的思路呢和spring线程池我觉得是一样的,都是可以定义最小线程数,比如25,最大线程数比如200,队列长度,空闲线程关闭时间,keepalive长连接保持时间等等,当达到最大数量时,将多余的任务放到队列中,队列放不下了,直接refuse)这种处理高流量的方式还是比较经典的,以后有机会可以这么设计。
4、container、包含engine。
5、engine、是container的子容器,也是servlet的顶层容器。
!!这里澄清一下container和engine的关系,对于一个service,他两都是全局一份的,都是和servlet有关系,但是为什么要区分开两个呢?我是这么理解的,需要把做的事情细化到每个对象,因为处理http请求这种底层的事应该很细,所以需要多个对象。
6.host、是engine的子容器,可以有多个,虚拟主机,比如说同一个tomcat下部署两个项目,应该就是根据这个区分的(个人理解,不保证正确)
host这里注意一个参数docBase,之前在tomcat部署项目的时候,会去server.xml里配置,现在进入springboot时代了,这块都由spring托管了。
7.context、web应用上下文,复制解析和资源管理
8.wrapper是具体的servlet
!!5-8也就是engine、host、context、wrapper构成了责任链模式(责任链我比较熟了、这里大概写一下,责任链就是一个被处理者,多个处理者,比如说请假申请作为被处理者,由多个处理者组长,部门经理,总经理等等逐级处理,每个处理者有权利中断,也就是直接返回),官方说法是pipeline(整条责任链),valve(活塞的意思,相当于每个阀门,也就是责任链上的每个处理者,也就是5-8)。

9.weblogic oracle的服务器,最好的j2ee服务器,但是费用昂贵,在性能、安全性方面做的好。
10.jetty也是apache的,比tomcat更加简单、易拓展,轻量级,但是使用率没有tomcat高,并且性能上tomcat表现更适合企业级开发。
11.apache http server 、nginx两款处理静态资源和反向代理的服务器,nginx支持多个连接(万级)对应一个进程,所以nginx的性能更好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值