天天看點

Tomcat Session共享解決方案

1. 背景tomcat Session 共享

有多種實作方案,在這裡介紹2種,以下優缺點屬個人總結。

方案1:使用 web容器本身功能,Tomcat多點傳播

優點:配置簡點,不依賴第三方存儲。

缺點:廣播延遲,需要Tomcat7及以上版本,需要廣播端口

方案2:使用緩存實作,Redis或memcached

優點:實時性高,常用方式

缺點:需要維護第三方服務,必須保證高可用。

其他方案:

可以設定nginx或haproxy等負載方式為ip綁定,假裝實作Tomcat之間的Session共享(對負載均衡要求不嚴)

方案1:Tomcat自帶Cluster

網上比較多見不在贅述請見連接配接。http://blog.csdn.net/Readiay/article/details/45393435

方案2:Redis方案

1、jar下載下傳位址:https://github.com/jcoleman/tomcat-redis-session-manager/downloads

2、将jar包放到tomcat/lib下

Tomcat Session共享解決方案
3、修改tomcat/conf/contenxt.xml配置檔案,增加
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"  
host="localhost"   
port="6379"   
database="0"   
maxInactiveInterval="10800" /> 

           

PS:maxInactiveInterval為session過期時間,機關為秒,請項目組根據情況調整

方案3:Memcached方案

1、jar包下載下傳:https://code.google.com/archive/p/memcached-session-manager/downloads

2、将jar包放到tomcat/lib下

Jar包下載下傳位址可下載下傳以下3個包

memcached-session-manager-1.5.1.jar

memcached-session-manager-tc6-1.5.1.jar

msm-javolution-serializer-1.5.1.jar

以下2個jar包自行下載下傳相應版本

memcached-2.5.jar

javolution-5.5.1.jar

3、修改tomcat/conf/contenxt.xml配置檔案,增加

<Context reloadable="false" path="" >
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
memcachedNodes="n1:192.168.1.101:11211,n2:192.168.1.102:11211"  
sticky="false"  
sessionBackupAsync="false"  
lockingMode="auto"  
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory" />  
</Context>