基于Java IO 序列化方案的memcached-session-manager多memcached节点配置

session的序列化方案官方推荐的有4种

  1. java serialization
  2. msm-kryo-serializer
  3. msm-javolution-serializer
  4. msm-xstream-serializer

关于这几种,官方也给出了比较:

  • Java serialization is very robust and a proven technology. The biggest disadvantage IMHO is that different class versions cannot be handled.
  • Kryo is an extremely fast binary serialization library. In the popular thrift-protobuf-compare benchmark it's one of the fastest serialization toolkits - and it differs from the fastest in that it does NOT need a schema definition of serialized data, which is a requirement for serialization arbitrary session data. A disadvantage of using kryo based serialization is that it's binary - you just cannot look how the serialized object graph looks like. This is my favorite serialization strategy, just because of its great performance.
  • Javolution is a very good and fast xml binding toolkit. The reflection part is written by me and adds the bits that are actually binding POJOs to xml. It is covered well with unit tests, however I cannot guarantee that there's no issue left to solve (actually this serialization strategy was in use in my own projects, now replaced by kryo based serialization).
  • XStream based serialization should be very robust as this is an often used java object binding library. The biggest disadvantage IMHO is the relatively bad performance.

要注意的是javolution是唯一支持copyCollectionsForSerialization="true"时对能对线程不安全的collection进行序列化特性的,其他的方案要对序列化线程不安全的collection时特别处理,性能最好的序列化方案是Kryo。

网上有一些例子都是关于Javolution的,我个人倾向于使用Kryo,至于序列化出现的问题还可以自己解决,不过先使用java IO来配置,先用起来,以后再慢慢优化,换成Kryo。

直接在CATALINAHOME/lib/下添加memcached−2.5.jar和memcached−session−manager−1.4.0.jar ,然后对CATALINA_HOME/conf/server.xml修改相应的配置

复制代码
   <Context path="/webapp" docBase="D:\webapp\WebRoot" reloadable="false">  
     <Manager   
        className= "de.javakaffee.web.msm.MemcachedBackupSessionManager"  
        memcachedNodes= "n1:192.168.112.1:11211,n2:192.168.112.2:11211"   
        sticky="false"   
        lockingMode="auto"   
        requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    
        sessionBackupAsync= "false"   
        sessionBackupTimeout= "0"   
        memcachedProtocol="binary"  
        transcoderFactoryClass= "de.javakaffee.web.msm.JavaSerializationTranscoderFactory"    
     />  
   </Context>  

由于项目对session 管理模式是non-sticky的,所以不配置failoverNodes,任何一个web工程对session的修改要及时更新到memcache上,所以sessionBackupTimeout为0(不同的应用有不同的配置,这样配置是符合我现在这个项目要求的)。

相关推荐
何似在人间575几秒前
SpringAI+DeepSeek大模型应用开发——3 SpringAI简介
java·ai·大模型开发·spring ai
长安城没有风7 分钟前
从入门到精通【MySQL】 JDBC
java·mysql
hx_long22 分钟前
centos7 安装miniconda
python·conda
这里有鱼汤30 分钟前
退退退,Python 调试的科学方法,让你高效改 Bug
python
databook32 分钟前
『Plotly实战指南』--布局基础篇
python·数据分析·数据可视化
这里有鱼汤36 分钟前
Python 让电脑说话?没网也能用,真香!🗣️💻
后端·python
薯条不要番茄酱41 分钟前
【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(三)
java·java-ee
AI大模型团团42 分钟前
从基础概念到前沿应用了解机器学习
人工智能·python·随机森林·机器学习·ai·线性回归·llama
yuweififi1 小时前
随手笔记-python-opencv 读取图像的顺序 与pytorch处理图像的顺序
pytorch·笔记·python·opencv
SsummerC1 小时前
【leetcode100】杨辉三角
python·leetcode·动态规划