Tomcat Session 共享与Non-Sticky模式:实现高可用Web应用

在分布式Web应用环境中,Tomcat服务器的会话(Session)管理对于保证用户体验至关重要。随着用户基数的增长和业务需求的变化,传统的单点Session管理模式已难以满足需求。本文将探讨如何利用Tomcat实现Session共享,并介绍Non-Sticky模式的概念及其在提高系统灵活性和可靠性方面的优势。

session 共享服务器

什么是Session?

Session是Web应用程序中用于跟踪用户状态的一种机制。它允许服务器存储关于用户的信息,如登录状态、购物车内容等,这些信息在用户的多次请求之间保持一致。然而,在集群环境下,由于用户的请求可能被路由到不同的服务器实例上,确保会话数据的一致性和可访问性变得尤为重要。

MSM 介绍

注意:当前MSM不支持 tomcat11版本
在这里插入图片描述
MSM(memcached session manager)提供将Tomcat的session保持到memcached或Redis的程序,可以实现高可用。
项目早期托管在google code,目前在Github。
github 网站链接:https://github.com/magro/memcached-session-manager
在这里插入图片描述

支持Tomcat的 6.x、7.x、8.x、9.x
Tomcat的Session管理类,Tomcat版本不同

  • memcached-session-manager-2.3.2.jar
  • memcached-session-manager-tc8-2.3.2.jar

Session数据的序列化、反序列化类

  • 官方推荐kyro
  • 在webapp中WEB-INF/lib/下

驱动类

  • memcached(spymemcached.jar)
  • Redis(jedis.jar)

安装

参考链接
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
将spymemcached.jar、memcached-session-manage、kyro相关的jar文件都放到Tomcat的lib目录中去,这个目录是 $CATALINA_HOME/lib/,对应本次安装就是/usr/local/tomcat/lib。

kryo-3.0.3.jar
asm-5.2.jar
objenesis-2.6.jar
reflectasm-1.11.9.jar
minlog-1.3.1.jar
kryo-serializers-0.45.jar
msm-kryo-serializer-2.3.2.jar
memcached-session-manager-tc8-2.3.2.jar
spymemcached-2.12.3.jar
memcached-session-manager-2.3.2.jar

Non-Sticky 模式

Non-Sticky 模式工作原理

non-sticky 模式即前端tomcat和后端memcached无关联(无粘性)关系 从msm 1.4.0之后版本开始支持non-sticky模式。 Tomcat session为中转Session,对每一个SessionID随机选中后端的memcached节点n1(或者n2)为主 session,而另一个memcached节点n2(或者是n1)为备session。产生的新的Session会发送给主、备 memcached,并清除本地Session。
后端两个memcached服务器对一个session来说是一个是主,一个是备,但对所有session信息来说每个 memcached即是主同时也是备。
如果n1下线,n2则转正。n1再次上线,n2依然是主Session存储节点。

Memcached 配置

放到 $CATALINA_HOME/conf/context.xml 中

<Context>
......
 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值