MSM (Memcached-session-manager) 使用

網上關於memcached-session-manager 說明的blog不少,今天實驗了,總結下。 javascript

        MSM(memcached-session-manager) 支持tomcat6 tomcat7 ,利用 ValueTomcat 閥)對Request進行跟蹤。Request請求到來時,從memcached加載sessionRequest請求結束時,將tomcat session更新至memcached,以達到session共享之目的, 支持 sticky   non-sticky 模式。 css

         黏性(sticky)sessionjava

       非黏性( non-sticky)session: web

          Sticky 模式:   tomcat session  session memcached 爲備 sessionRequest請求到來時, memcached加載備 session tomcat (僅當tomcat jvmroute發生變化時,不然直接取tomcat session)Request請求結束時,將tomcat session更新至memcached,以達到主備同步之目的。 正則表達式

           Non-Sticky模式:tomcat session  中轉session memcached1 爲主 sessionmemcached 2 爲備sessionRequest請求到來時,從memcached 2加載備 session  tomcat,(當 容器 中仍是沒有session 則從memcached1加載主 session  tomcat 這種狀況是隻有一個memcached節點,或者有memcached1 出錯時),Request請求結束時,將tomcat session更新至memcached1和備memcached2,而且清除tomcat session 。以達到主備同步之目的。
tomcat

MSM 配置: session

      

參考地址http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration dom

   http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration 異步

將以下jar放到tomcat lib下面 jvm

在tomcat conf context.xml中加入下面代碼

<Context>   ...   <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"     memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211"     sticky="false"     sessionBackupAsync="false"     lockingMode="uriPattern:/path1|/path2"     requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"     transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"     /> </Context>


Manager標籤屬性說明:

             className 此屬性是必須的。

            memcachedNodes  此屬性是必須的。這個屬性必須包含你全部運行的memcached節點。每一個節 點的定義格式爲<id>:<host>:<port>。 多個之間用空格或半角逗號隔開(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。若是你設置單個memcache節點<id>是可選的,因此它容許設置爲<host>:<port>(memcachedNodes="localhost:11211")。

             failoverNodes

                      可選項,屬性只能用在非粘連Session機制中。

          此屬性必須包含memcached節點的Id,此節點是Tomcat做爲備份使用。多個之間用空格或逗號隔開

              memcachedProtocol

                   可選項,默認爲text。出屬性指明memcached使用的存儲協議。只支持text或者binary。

              sticky 可選項,默認爲true。

                    指定使用粘性的仍是非粘性的Session機制。

              lockingMode 可選項, 此屬性只對非粘性Session有用,默認爲none。

                     指定非粘性Session的鎖定策略。他的只有

                        (1)、none:歷來不加鎖

                        (2)、all: 當請求時對Session鎖定,直到請求結束

                        (3)、auto:對只讀的request不加鎖,對非只讀的request加鎖

                        (4)、uriPattern:<regexp>: 使用正則表達式來比較requestRUI + "?" + queryString來決定是否加鎖,

             requestUriIgnorePattern  可選項

                        此屬性是那些不能改備份Session的請求的正則表達式。若是像css,javascript,圖片等靜態文件被同一個Tomcat和同一個應用上下文來提供,這些

                   請求也會經過memcached-session-manager。可是這些請求在一個http會話中幾乎沒什麼改變,因此他們不必觸發Session備份。因此那些靜態文件

                   不必觸發Session備份,你就可使用此屬性定義。此屬性必須符合java regex正則規範。

            sessionBackupAsync 可選項,默認true

                        指定Session是否應該被異步保存到Memcached中。 若是被設置爲true,backupThreadCount設置起做用,若是設置false,經過sessionBackupTimeout

                   設置的過時時間起做用。

            backupThreadCount 可選項,默認爲CPU內核數。

                       用來異步保存Session的線程數(若是sessionBackupAsync="true")。

            sessionBackupTimeout  可選項,默認100,單位毫秒

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

            sessionAttributeFilter 可選項 從1.5.0版本有

                       此屬性是用來控制Session中的那個屬性值保存到Memcached中的正則表達式。鄭則表達式被用來匹配Session中屬性名稱。如

                  sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"屬性保存到Memcached中。

                  依賴於選擇的序列化策略。

            transcoderFactoryClass 可選,默認爲 de.javakaffee.web.msm.JavaSerializationTranscoderFactory

                       此屬性值是建立序列化和反序列化保存到Memcached中的Session的編碼轉換器的工廠類名。這個指定的類必須實現了de.javakaffee.web.msm.TranscoderFactory

                 和提供一個無參的構造方法。例如其餘的有效的實如今其餘packages/jars中提供如:msm-kryo-serializer,msm- xstrea-serializer和msm-javolution-serializer.

            copyCollectionsForSerialization 可選項,默認false。

            customConverter 可選項

   enableStatistics 可選項,默認true

                   用來指定是否進行統計。

            enabled 可選項,默認true

                    指定Session保存到Memcached中是否可用和是否能夠經過JMX進行改變。只用於粘性Session。

配置$CATALINA_HOME/conf/server.xml

  1. <Engine name="Catalina"defaultHost="localhost"jvmRoute="tomcat2">  

   注意每臺tomcat的jvmroute參數都不能同樣

返回sessionid :011F1CAEAF5AE925F4124D94785AFE41-n1 .tomcat2

 n1 表示memcached ; .tomcat2表示配置jvmRoute。

相關文章
相關標籤/搜索