nginx的学习笔记,第三记
nginx默认的是轮训的算法,如果,网站只是呈现一些东西,不需要登录,这样是没问题。
但是往往业务上是需要session来实现一些东西,可能正在tomcat1弄的好好的,如果一个请求发到tomcat2上就有问题。带来很多操作上的不便。
解决办法:
1,应用服务器,session同步,很麻烦。应用服务器本身就是能力有限,再加上session同步,带来网络开销,会越来越大,这种方式是基本不用的。
2,负载均衡算法设置为i p hash,请求定位到同一个tomcat上,集群容灾的特性就体现不出来了,只能说是提高了负载水平,系统整个并发量提高了。在一个小系统里面是可以容忍的。
upstream test_war{ #服务器集群的名字,此处叫做test_war
server localhost:8090;#服务器配置
server localhost:8080;
ip_hash;
}
3,session外置,彻底解决问题。 存在应用里面,迟早会有session共享问题。把session存在外面就ok了。单点登录,有一种成熟的框架。
session集中管理,DB缓存:memcache,redis
login以后,把session的id拿到,然后存到redis里面。可以把用户的账号密码生成一个token,加密之后,可以解密的token放到外面。
从外置的数据去取,从外置的缓存去取。只要可以标志用户的唯一的会话,具有过期特性的。