nginx 与 tomcat 集群 一二事 (0) - 简单介绍

最近看了nginx以及tomcat的集群,通俗的做一下简单总结吧

nginx 是一个http服务器,是由俄罗斯人发明的,目前主流的服务器,作为负载均衡服务器,性能非常好,最高支持5万个并发连接数,在淘宝被广泛使用(据说被淘宝的工程师优化到单机200万的并发,非常的厉害)

单个tomcat最大支持的用户并发量默认是150,在测试过程中250左右开始会有性能的问题

举个栗子,有3台tomcat,有N多请求同时经过nginx的时候,nginx作为一个路由,把请求分别分发给这3台tomcat,以此减少tomcat负重

作为集群,当其中一台tomcat宕机,出现故障,那么nginx将会自动排除这个服务

tomcat 与 nginx 之间通过ajp协议,这个协议提供很高的通信速度以及性能

另外,nginx也能够存放静态资源,项目中会存在很多图片,以及静态页面,如果把这些静态资源放入nginx中,那么性能会提高,速度是毫秒级别的,非常快

在动静分离的项目中,所有静态资源(HTML, CSS, JavaScript)都放入此服务器中,客户端请求到nginx,这样将会拦截大量的非动态请求,以此提高性能

工作原理:

在upstream bakend 中配置多个tomcat服务器,每个请求按照不同的时间顺序去请求不同的tomcat,如果在某一时段中有tomcat挂了,那么会被自动剔除

ip_hash:主要用于解决session问题,使用后,每个用户访问的后端服务器就是固定的,session不会改变,这个也就是通常所说的粘性session,访问速度快,只与一个节点上的服务器通信,缺点就是如果这个节点挂了,用户的session信息也就没了

*有粘性session那么就又非粘性session,非粘性session指的就是session在多个tomcat之间复制,节点挂了也能访问到,缺点就是在大并发的时候性能有影响

粘性和非粘性session都是基于msm的,也就是Memcached Session Manager; 话说tomcat和memcached 是无缝对接的

1   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
2  memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"
3     sticky="false"
4     sessionBackupAsync="false"
5     lockingMode="uriPattern:/path1|/path2"
6     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
7  transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
8     />

sticky="false" 指定为非粘性session

 

简单示意图

nginx 与 tomcat 集群 一二事 (0) - 简单介绍

简单架构配置可以参考如下

nginx 与 tomcat 集群 一二事 (0) - 简单介绍

这是针对nginx的一些简单总结,接下来的文章将会深入对nginx进行详细探讨。

上一篇:VC使用双缓冲避免绘图闪烁的正确使用方法【转】


下一篇:WPF从选项卡添加新的工具