博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat-架构篇
阅读量:6139 次
发布时间:2019-06-21

本文共 838 字,大约阅读时间需要 2 分钟。

  hot3.png

    javaWeb开发的童鞋,经常跟tomcat等接触,当然apache还有jetty这种轻量级容器;至于jboss、weblogic啥的,现在还没怎么玩过。

   web应用要,对外提供http服务,童鞋们把他部署到servlet容器(暂不讨论微服务啥的),由servlet容器运行web应用,来张tomcat的图:

   层次感很强、一个个组件,tomcat架构给人的感觉,来分别说说这些哥们:

   Connector:负责网络IO,有BIO、NIO、NIO2、AIO,实际部署使用apache(或者nginx)转发;
   Container:对应概念模型中的引擎、主机、应用、Servlet,容器处理通过Pipeline管道,由不同的Valve处理,类似责任链模式;

   再说说容器的运行,tomcat的线程模型是并发模型,也就是我们平时讨论的springmvc默认不支持线程安全,struts默认支持线程安全云云;

   事实上,并发带来的不只是共享状态,产生的可见性、原子性,一致性,你还要考虑临界区的逻辑;当然,@Transaction把这些都推给了数据库,前提你是关系数据库。
  以nio的http11Protocol为例,endpoint搞到一个连接socket,从threadPoolExecutor喊来一个socketHandler,就是请求的处理者,通过processor对象池,调用adapter进入Container;  
  然后, container就开始父子逐级调用,通过pipeline管道,由vavle来做逻辑处理,直到返回到processor;
  最后,根据socket的状态,判断返回、继续等等,表示没理解全,状态不少的说。

  那个,平时我们做网络开发,用netty就好了,不必自己处理网络IO;项目做大之后,就开始走分布式服务路线了,涉及Dubbo、SpringCloud啥的。

 下面,木有了。

   

转载于:https://my.oschina.net/lobo/blog/757884

你可能感兴趣的文章
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>
Linux磁盘管理和文件系统管理
查看>>
linux运维人员的成功面试总结案例分享
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
RAC表决磁盘管理和维护
查看>>