Tomcat和Nginx

Tomcat架构和原理剖析

TPC/IP Http协议

浏览器访问服务器使用HTTP协议,Http是应用层协议,定义数据通信的格式。具体的数据传输使用的 TCP/IP 协议

Servlet容器

  • Http服务器收到请求之后把请求交给Servlet容器处理,Servlet容器通过Servlet接口调用业务类。Servlet接口和Servlet容器者一整套内容称作Servlet规范
  • Tomcat实现了Servlet规范,是Servlet容器,也是http服务器

Tomcat Servlet容器处理流程

  1. Http服务器吧请求信息使用ServletRequest对象封装
  2. URL和Servlet映射关系,定位Servlet
  3. 加载Servlet(通过反射,实例化Servlet)
  4. 调用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/;
}

你可能感兴趣的:(Tomcat和Nginx)