MSM(Memcached-session-manager)使用

jopen 11年前發布 | 38K 次閱讀 緩存服務器 memcached

網上關于memcached-session-manager 說明的blog很多,今天實驗了,總結下。

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

         黏性(sticky)session

       非黏性( non-sticky)session:

          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 。以達到主備同步之目的。

MSM 配置:

      

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

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

將如下jar放到tomcat lib下面

在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。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!