Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?
什么是会话保持? 会话保持又称作粘滞会话(Sticky Sessions)。会话保持是指在负载平衡器上的一种机制,可以辨认客户端与处事器之间交互进程的关系性,在作负载平衡的同时还担保一系列相干系的会见哀求城市分派到一台呆板上。换句话讲,会话保持可使得来自统一IP的哀求被转发到统一台后端处事器上。 为什么要会话保持? 确保在吻合的情境下,未来自沟通客户端的哀求转发至后端沟通的处事器举办处理赏罚。譬喻:你打开淘宝登录了小我私人账号,纵然你赏识了再多的店肆宝物,切换了许多的页面,用户名是稳固的。假如处事器之间没有会话信息的同步机制,则其他处事器无法辨认用户身份,造成用户在和应用体系产生交互时呈现非常。 nginx+tomcat会话保持的方案有许多种,本日小编就同各人一路切磋下各类方案的优弱点,辅佐各人选择出最得当本身营业的方案! Nginx的ip_hash算法 Nginx中的ip_hash机制可以或许让某一客户端在相等长的一段时刻内只会见牢靠的后端web处事器,会话就会获得保持。在某网站页面举办登录时,就不会在后端的web处事器之间跳来跳去,也不会呈现登录一次的网站又提醒从头登录的环境。 ![]() 利益: 设置简朴,在nginx.conf的upstream调治里增进一句ip_hash即可。 弱点: 1)nginx必需作为最前端的处事器,不然nginx无法获取到客户端精确的ip,以至不能按照ip作hash 2)假如nginx的后端尚有其余负载平衡,将导致某个客户端的哀求不能定位到统一台session应用处事器上 3)当后端tomcat宕机,用户session会丢失 合用场景:设置简朴,操作hash函数办理session的题目,因为宕机导致session信息丢失,提议仅用于开拓情形和测试情形。 其它,其余的负载平衡软件也有相同算法,好比LVS的sh算法,haproxy的source算法等 Tomcat集群的Session复制 tomcat的session复制分为两种,一种是全局式的(all-to-all),也就是Node实例的session产生变革之后,它会将这些改观复制到其他全部集群组的成员;另一种是局部式的,它会用到BackupManager、BackupManager实现只复制给一个Buckup Node,而且这个Node会陈设沟通的Web应用。 tomcat的session复制是基于IP组播(multicast)来完成的。简朴的说就是必要举办集群的tomcat通过设置同一的组播IP和端口来确定一个集群组,当一个node的session产生改观的时辰,它会向IP组播发送改观的数据,IP组播会将数据分发给全部组里的其他成员(node)。 官方设置方法如下图: 地点:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html 利益: 当后端tomcat宕机,用户session不丢失。 弱点: 1)行使组播将信息复制到多个tomcat节点,收集开销大 2)耗损更多内存和带宽 合用场景:tomcat官方保举,集群较量小时回收此方案。 用缓存齐集打点session 在单独的处事器或处事器集群上行使缓存技能,如Redis存储Session数据,齐集打点全部的Session,全部的Web处事器都从这个存储介质中存取对应的Session,实现Session共享。 今朝常用的Session齐集打点方案有两种,一种是Memcache-Tomcat-Session,另一种是Spring Session。 利益: 1)靠得住性高,镌汰Web处事器的资源开销 2)进步session数据安详性 弱点: 1)太依靠缓存处事器 2)必要特另外缓存处事器,本钱也高 3)实现上有些伟大,设置较多 合用场景:Web处事器较多、要求高可用性的环境。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |