你的位置:首页 > Java教程

[Java教程]nginx 与 tomcat 集群 一二事


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

nginx 是一个http服务器,是有俄罗斯人发明的,目前主流的服务器,作为负载均衡服务器,性能非常好,最高支持5万个并发连接数,在淘宝被广泛使用

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

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

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

另外,nginx也能够存放静态资源,项目中会存在很多图片,以及静态页面,如果把这些静态资源放入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

 

简单示意图