基于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(不同的应用有不同的配置,这样配置是符合我现在这个项目要求的)。

相关推荐
Moshow郑锴14 分钟前
sql-pipeline - 基于PostgreSQL的SQL健康检查与发布编排平台
java·sql
海绵宝宝转agent7 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭7 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT7 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
Wang's Blog7 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_962071578 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境9 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
\光辉岁月/9 小时前
5.java-数组
java·开发语言
Java后端的Ai之路9 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师9 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏