Tomcat架构和原理剖析
TPC/IP Http协议
浏览器访问服务器使用HTTP协议,Http是应用层协议,定义数据通信的格式。具体的数据传输使用的 TCP/IP 协议
Servlet容器
- Http服务器收到请求之后把请求交给Servlet容器处理,Servlet容器通过Servlet接口调用业务类。Servlet接口和Servlet容器者一整套内容称作Servlet规范
- Tomcat实现了Servlet规范,是Servlet容器,也是http服务器
Tomcat Servlet容器处理流程
- Http服务器吧请求信息使用ServletRequest对象封装
- URL和Servlet映射关系,定位Servlet
- 加载Servlet(通过反射,实例化Servlet)
- 调用Servlet,请求处理结果封装成ServletResponse返回
Tomcat组件
- 连接器组件 Coyote
- 容器组件 Catalina,Tomcat的核心
Tomcat启动初始化Catalina 实例,实例通过加载server.xml 完成其他实例的创建,创建一个server实例- 1个server实例对应 多个service实例
- 1个service实例对应 多个connector实例和一个container实例
类加载
JVM类加载器
- 引导类加载器
- 扩展类加载器
- 系统类加载器
双亲委派机制
当某个类加载器加载 .class文件,委托他的上级类加载器,直到加载器树的顶层。如果上级类加载器没有加载,自己才会加载这个类
Tomcat类加载器
Tomcat webapps部署了多个应用,多个应用中不同的jar中可能有相同的类名,
Webapp ClassLoader 每个应用程序都会有一个Webapp ClassLoader,加载本应用程序的/WEB-INF/classes, /WEB-INF/lib/的类
- Bootstrap ClassLoader加载指定的类
- 未加载到,WebApp ClassLoader 加载/WEB-INF/classes加载
- 未加载 到,WebApp ClassLoader /WEB-INF/lib/*.jar加载
- 未加载到,一次从 System,Common,Shared依次加载(双亲委派机制)
Nginx
Nginx特点
Http服务器和反向代理服务器,占有内存少,并发强。支持5w并发连接数
负载均衡
upstream lagouServer {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
location /abc {
proxy_pass http://lagouServer/;
}
网友评论