从JavaWeb的角度认识Nginx

  做为一名JavaWeb方向程序员,更多的是写服务器后台代码,可是俗话说,不想当架构师的程序员不是好程序员,咱们要对并发、负载等词汇进行深刻探索。前端

 

1、从新认识Tomcatnginx

  1. Tomcat属于轻量级的Web应用服务器,在中小型系统和并发访问用户不是不少的的场合下被广泛使用。
  2. Tomcat其实是用来运行JSP页面和Servlet的,独立的Servlet容器是Tomcat的默认模式,能够理解为Tomcat只处理动态部分。
  3. 实际上Tomcat是Apache服务器项目的一个扩展组件,不过它是独立运行的。
  4. 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
  5. Tomcat具备处理HTML页面的功能,可是它对HTML页面的处理能力远不如Apache。

 

  以上列举了Tomcat这个Web应用服务器的不足之处以及它的侧重点,由于它是Apache服务器的一个独立扩展插件,因此要将Apache服务器和Tomcat应用服务器一块儿使用才能取之长处避之短处。程序员

  可是随着Nginx服务器的袭来,Apache服务器的主流功能均可被Nginx服务器代替,并且Nginx服务器的性能更好。Nginx对请求的处理是异步型的,非阻塞的;而Apache对请求的处理是阻塞型,非异步型的;在高并发状况下Nginx能保持地资源低消耗高性能高度模块化,并且Nginx的配置文件相对Apache更为简单。Nginx 同时也是一个很是优秀的邮件代理服务器,so,为何不选择Nginx服务器呢?后端

 

2、认识Nginx
浏览器

  1. Nginx是一个高性能的Http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器(电子邮件代理)。
  2. Nginx可做为负载均衡服务器,可做为Http代理服务器对外进行服务。
  3. 处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
  4. 模块化的结构。
  5. 在国内,不少著名的网站都用Nginx走位网页服务器,如百度、京东、新浪、网易、腾讯、淘宝等。

 

3、Nginx的功能缓存

  • 处理静态文件,索引文件以及自动索引;
  • 反向代理加速(无缓存),简单的负载均衡和容错;
  • 基于IP 和名称的虚拟主机服务;
  • 模块化的结构。同一个 proxy的多个子请求并发处理;
  • IMAP/POP3/SMTP代理服务。
  • 基于客户端 IP 地址和 HTTP 基本认证的访问控制;
  • 支持 FLV (Flash 视频);

 

Nginx还不止这些功能,我只是列出了常见的功能。tomcat

 

4、关于负载均衡服务器

  当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,无论多么强大的服务器,都知足不了网站持续增加的业务需求。这种状况下,更恰当的作法是增长一台服务器分担原有服务器的访问及存储压力。扩展网络设备和服务器的带宽、增长吞吐量、增强网络数据处理能力、提升网络的灵活性和可用性。其意思就是分摊到多个操做单元上进行执行。网络

  在这里咱们只阐述对请求的的负载均衡。数据结构

  经过负载均衡调度服务器,未来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,若是有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力再也不成为整个网站的瓶颈。

  理论上的JavaWeb项目结构应该是这样的

   

 

5、Nginx和Tomcat对请求负载均衡的方案

  总体思想方向:前端部署nginx服务器,后端部署tomcat应用。用户访问nginx服务器,对于静态资源nginx服务器直接返回到浏览器展现给用户,对动态资源的请求被nginx服务器转发(分配)到tomcat应用服务器,tomcat应用服务器将处理后获得的数据结构返回给nginx服务器,而后返回到浏览器展现给用户。

  注意:在这里Tomcat应用服务器就是Java应用,能够理解为后台。

 

总结:在这里Nginx做为反向代理服务器,能够对后台的多台Tomcat服务器负载均衡,也可让Nginx处理静态页面的请求、Tomcat处理JSP页面请求,以此达到动静分离的目的。

这篇博客讲解科普、理论和方向,下篇博客将带来实践。

相关文章
相关标签/搜索