基於Memcached的tomcat集羣session共享所用的jar

多個tomcat各類序列化策略配置以下:
1、java默認序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"    
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"   
sessionBackupAsync= "false"  
sessionBackupTimeout= "100"     
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"   
    />
lib增長jar包:
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jarjavascript


2、javolution序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"  
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"   
sessionBackupAsync= "false"  
sessionBackupTimeout= "100" 
copyCollectionsForSerialization="true"  
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
    />
lib增長jar包
msm-javolution-serializer-cglib-1.3.0.jar
msm-javolution-serializer-jodatime-1.3.0.jar
spymemcached-2.10.3.jar
javolution-5.4.3.1.jar
msm-javolution-serializer-1.7.0.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jar
css

3、xstream序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"  
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"   
sessionBackupAsync= "false"  
sessionBackupTimeout= "100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.xstream.XStreamTranscoderFactory"   
    />
lib增長jar包
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.6.jar
msm-xstream-serializer-1.7.0.jar
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jar
java

4、flexjson序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"    
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"   
sessionBackupAsync= "false"  
sessionBackupTimeout= "100"     
transcoderFactoryClass="de.javakaffee.web.msm.serializer.json.JSONTranscoderFactory"   
    />
lib增長jar包
flexjson-3.1.jar
msm-flexjson-serializer-1.7.0.jar
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jar
web

5、kryo序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
   memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"  
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"   
sessionBackupAsync= "false"  
sessionBackupTimeout= "100"   
copyCollectionsForSerialization="true"  
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"   
    />
lib增長jar包
kryo-1.04.jar
minlog-1.2.jar
asm-3.2.jar
reflectasm-1.01.jar
kryo-serializers-0.11.jar
msm-kryo-serializer-1.7.0.jar
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jar正則表達式

各類狀況配置如上,聽說kryo序列化效率比較快,未作測試。
選其一中方式,部署2個tomcat端口分別是8080和8181
啓動後,訪問刷新SessionID是否一致。
http://127.0.0.1:8080/t.jsp
SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
SessionIP:127.0.0.1
SessionPort:8080  json

http://127.0.0.1:8181/t.jsp
SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
SessionIP:127.0.0.1
SessionPort:8181 
測試結果SessionID一致。tomcat

配置實例請參考:http://download.csdn.net/detail/tianwei7518/6832985session

session存儲到memchached實現方案時。他主要功能是修改tomcat的session存儲機制,使之可以把session序列化存放到memcached中。
Manager標籤屬性說明
1.className  必須
類名:de.javakaffee.web.msm.MemcachedBackupSessionManagerapp

2.memcachedNodes  必須
memcached節點:此屬性應該包含全部運行的 memcached節點或者membase bucket的uri地址,每個memcached節點的屬性定義格式爲<id>:<host>:<port>, 多個節點定義直接使用空格或者逗號分隔,形如:memcachedNodes="n1:app01:11211,n2:app02:11211",若是隻 有單個的memcached節點,則<id>是可選項,只需配置<host>:<port>便可,形 如:memcachedNodes="localhost:11211"。
若是咱們配置的是membase,那麼從1.6.0版本開始,咱們能夠配置指定一個或者多個membase bucket uris,形如:http://host1:8091/pools,http://host2:8091/pools。Bucket 名稱和密碼經過屬性username,password來定義。membase buckets鏈接須要遵循memcached協議,傳輸數據經過二進制流方式。異步

3.failoverNodes 可選項
故障轉移節點:可選項,對非黏性session不可用,屬性必須包含memcached節點集羣的全部ids。節點id之間用空格或者逗號分隔。

4.username 可選項
從1.6.0版開始使用,而且是可選的。用來進行membase bucket或者SASL驗證,密碼能夠爲空。

5.password 可選項
從1.6.0版開始使用,而且是可選的。用來進行membase bucket或者SASL驗證,密碼能夠爲空。

6.memcachedProtocol    可選項
定義memcached協議,默認使用text文本,出屬性指明memcached使用的存儲協議。只支持text或者binary。

7.sticky    可選項
定義session方式爲黏性或非黏性,默認爲true,多個tomcat時需使用非黏性

8.lockingMode    可選項
只有非黏性session才使用,默認值爲none
none: 從不對session進行鎖定
all: session將一直被鎖定,知道請求結束
auto: 對於只讀請求,session將不會被鎖定,若是是非只讀請求,則session會被鎖定
uriPattern:<regexp>: 經過正則表達式的方式來對請求uri以及查詢字符串進行匹配,只有匹配上的纔會被鎖定。
9.requestUriIgnorePattern   可選項

此屬性是那些不能改備份Session的請求的正則表達式。若是像css,javascript,圖片等靜態文件被同一個Tomcat和同一個應用 上下文來提供,這些請求也會經過memcached-session-manager。可是這些請求在一個http會話中幾乎沒什麼改變,因此他們不必 觸發Session備份。因此那些靜態文件不必觸發Session備份,你就可使用此屬性定義。此屬性必須符合java regex正則規範。
    如:".*\.(png|gif|jpg|css|js)$"  

10.sessionBackupAsync   可選項
指定Session是否應該被異步保存到Memcached中。 若是被設置爲true,backupThreadCount設置起做用,若是設置false,經過sessionBackupTimeout設置的過時時間起做用。

11.backupThreadCount    可選項
 用來異步保存Session的線程數,(若是sessionBackupAsync="true")。默認值爲cup的內核數。

12.sessionBackupTimeout    可選項
 設置備份一個Session所用的時間,若是操做超過期間那麼保存失敗。此屬性只在sessionBackupAsync="false"是起做用。默認100毫秒

13.operationTimeout    可選項
從1.6.0版開始使用, 默認值爲1000

14.sessionAttributeFilter    可選項
 此屬性是用來控制Session 中的那個屬性值保存到Memcached中的正則表達式。鄭則表達式被用來匹配Session中屬性名稱。如 sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"屬性保存到Memcached中。依賴於選擇的序列化策略。

15.transcoderFactoryClass    可選項
 此屬性值是建立序列化和反序列化 保存到Memcached中的Session的編碼轉換器的工廠類名。這個指定的類必須實現了 de.javakaffee.web.msm.TranscoderFactory和提供一個無參的構造方法。例如其餘的有效的實如今其餘 packages/jars中提供如:msm-kryo-serializer,msm-xstrea-serializer和msm- javolution-serializer.
默認爲 de.javakaffee.web.msm.JavaSerializationTranscoderFactory

16.copyCollectionsForSerialization    可選項
默認值爲false。

17.customConverter    可選項
本身定義特殊的類註冊到kryo自定義轉換器中,實現序列化
18.enableStatistics    可選項
 用來指定是否進行統計。 默認值爲true。

19.enabled   可選項 指定Session保存到Memcached中是否可用和是否能夠經過JMX進行改變。只用於粘性Session。 默認值爲true。

相關文章
相關標籤/搜索