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

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

  hot3.png

上次基于Java IO的序列化方案配置了memcached-session-manager,但是性能不好,现在先简单配置成基于kryo的

Xml代码   
  1. <Context path="/mobilemail" docBase="D:\webapp\WebRoot" reloadable="true">  
  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. copyCollectionsForSerialization="true"   
  12. transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    
  13. customConverter="org.claros.commons.CustomKryoRegistration"  
  14.  />  
  15. </Context>  

 

 注意customConverter配置的com.test.serializer.CustomKryoRegistration这个类是自己写的类,是用来注册一些特殊类型的,同时自己负责对这些类型的序列化,可以放在项目里,也可以单独打个jar包,把以后遇到的所有复杂类型都在这里即可。项目里遇到的kryo没有注册到的类就是session里的java.util.concurrent.ConcurrentHashMap这个类,反序列化的时候本来可以做得更高效些,这里只是为了演示,直接用kryo自带的MapSerializer来反序列化

 

Java代码   
  1. package com.test.serializer;  
  2. import java.util.concurrent.ConcurrentHashMap;  
  3.   
  4. import com.esotericsoftware.kryo.Kryo;  
  5. import com.esotericsoftware.kryo.serialize.MapSerializer;  
  6.   
  7. import de.javakaffee.web.msm.serializer.kryo.KryoCustomization;  
  8.   
  9. public class CustomKryoRegistration implements KryoCustomization {  
  10.     public void customize(Kryo kryo) {  
  11.         kryo.register(ConcurrentHashMap.classnew MapSerializer(kryo));  
  12.     }  
  13. }  

 

 

 

感兴趣的同学请参见msm-kryo-serializer-1.4.0.jar注册wicket的MiniMap的流程(de.javakaffee.web.msm.serializer.kryo.WicketMiniMapRegistration里对MiniMap使用kryo-serializers-0.8.jar中的de.javakaffee.kryoserializers.wicket.MiniMapSerializer 单独处理)
要使用kryo进行序列化需额外添加kryo的jar包,我使用的是kryo-1.04,所需要的jar包在附件里。添加依赖的时候请注意不要引起jar包冲突,比较常见的是使用cglib和所依赖的asm的冲突,我的解决办法是留下kryo所需要的asm-3.3.1.jar,删去其他版本的asm,再将原先项目里的cglib换成cglib-nodep-2.2.jar。

转载于:https://my.oschina.net/baobao/blog/17080

你可能感兴趣的文章
Bokeh快速入门(1)
查看>>
第一天salt stack 笔记
查看>>
读取本机的Java运行环境和相关配置文件的内容
查看>>
leetCode 338. Counting Bits | Dynamic Programming | Medium
查看>>
Linux系统下的RZSZ(文件传输工具)
查看>>
创建 Rex-Ray volume - 每天5分钟玩转 Docker 容器技术(76)
查看>>
PostgreSQL中1000分区的继承分区表更新失败的原因
查看>>
快照对于云计算是鸡肋吗?
查看>>
PostgreSQL中如何对应SQL Server中的rowversion
查看>>
第5章选择结构程序设计
查看>>
linux 下网络流量监控
查看>>
[CentOS6] Page allcation failure
查看>>
Visual Studio 11 九大新特性:图文详解
查看>>
Linux Shell之六 流程控制--循环
查看>>
寻湖北荆州刘氏族谱
查看>>
Oracle数据库的DBID变更
查看>>
MagicLinux+MySQL5+PHP5+Apache2+phpMyAdmin
查看>>
服务器RAID磁盘坏道修复实战
查看>>
SOAP
查看>>
Sql Server 2005 基于通知的缓存失效
查看>>