博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Java IO 序列化方案的memcached-session-manager多memcached节点配置
阅读量:6931 次
发布时间:2019-06-27

本文共 2373 字,大约阅读时间需要 7 分钟。

在公司项目里想要在前端通过nginx将请求负载均衡,而后台的几组tomcat的session通过memcached(non-sticky模式)进行统一管理,这几组tomcat部署的web app是同一应用,session的变化要统一,项目组最后采用来对tomcat的session进行管理。

 

  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.
  •  is an extremely fast binary serialization library. In the popular  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 .
  •  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).
  •  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。

 

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

 

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

 

Xml代码  
  1. <Context path="/webapp" docBase="D:\webapp\WebRoot" reloadable="false">  
  2.   <Manager   
  3.      className"de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  4.      memcachedNodes"n1:192.168.112.1:11211,n2:192.168.112.2:11211"   
  5.      sticky="false"   
  6.      lockingMode="auto"   
  7.      requestUriIgnorePattern".*\.(png|gif|jpg|css|js)$"    
  8.      sessionBackupAsync"false"   
  9.      sessionBackupTimeout"0"   
  10.      memcachedProtocol="binary"  
  11.      transcoderFactoryClass"de.javakaffee.web.msm.JavaSerializationTranscoderFactory"    
  12.   />  
  13. </Context>  

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

转载地址:http://sdmjl.baihongyu.com/

你可能感兴趣的文章
WritableComparator - hadoop 1.2.1
查看>>
内部排序算法小结
查看>>
PLSQL_性能优化索引Index介绍(概念)
查看>>
Nginx学习笔记(一) Nginx架构
查看>>
MyBatis insert 返回主键的方法(oracle和mysql)
查看>>
Sigma Grid表格的功能特性
查看>>
12 Drupal 7 Modules That You Absolutely MUST Have
查看>>
freebsd常用命令
查看>>
【批处理】中文字符显示乱码的解决方法
查看>>
c#中高效的excel导入sqlserver的方法
查看>>
前端问题合集
查看>>
maven nexus 下发布第三方构件;
查看>>
Cocos2d-x 命令行创建项目时-t参数的理解
查看>>
tomcat 的编码设置?
查看>>
解決BufferedReader读取UTF-8文件中文乱码
查看>>
Java集合--HashTable
查看>>
android:scaleType详解
查看>>
BootStrap-----BootStrap标准模板
查看>>
Arch Linux 安装Google Earth
查看>>
android点滴3:Unable to instantiate activity Compo...
查看>>