
配置nginx和tomcat7实现session共享及kryo序列化部署指南

在涉及多台Tomcat服务器进行session共享时,通常采用Session复制或Session共享策略,以确保用户会话状态在多个节点间保持一致。当使用Nginx作为负载均衡器,并结合Memcached进行Session管理时,可以选择使用Memcached-Session-Manager (MSM) 来实现非粘性(non-sticky)的session共享,确保会话状态在多个Tomcat实例间共享。这种配置方式能够实现服务器故障时的会话状态持续性(session stickiness),而不需要粘性会话,即用户请求可以被任意一台Tomcat服务器处理。
在实现Memcached-Session-Manager的session共享时,需要对session进行序列化与反序列化。Kryo是另一种高效的序列化框架,它可以提供比Java原生序列化更快的序列化速度和更小的序列化数据大小。为了利用Kryo进行序列化,需要在Tomcat中引入Kryo相关的jar包。根据给定的文件信息,需要在每台Tomcat的lib目录下拷贝以下包:
- spymemcached-2.10.3.jar:Spy Memcached客户端,用于Tomcat与Memcached节点间通信。
- couchbase-client-1.2.2.jar:另一个Memcached客户端,提供与Memcached服务的通信能力。
- memcached-session-manager-1.6.5.jar:Memcached Session Manager的核心jar包。
- kryo-1.03.jar:Kryo序列化库。
- kryo-serializers-0.11.jar:Kryo序列化器库。
- asm-3.2.jar:一个轻量级的Java字节码框架,Kryo序列化过程可能需要使用到这个库来处理类的动态代理。
- msm-kryo-serializer-1.6.5.jar:为Memcached Session Manager提供的Kryo序列化器插件。
- memcached-session-manager-tc7-1.6.5.jar:针对Tomcat 7优化的Memcached Session Manager。
- reflectasm-0.9.jar:ReflectASM是一个用于Java反射操作的库,它提供了更快的反射调用性能。
- minlog-1.2.jar:一个日志框架,用于记录日志信息。
配置Memcached Session Manager时,需要修改每台Tomcat的context.xml或server.xml文件,添加MemcachedBackupSessionManager作为Session管理器,并设置session共享相关的参数。这里的`memcachedNodes`属性用于指定Memcached节点和端口,而`transcoderFactoryClass`属性配置了使用Kryo序列化器。
在Sticky模式下,session复制发生在主Tomcat服务器和备份Memcached服务器之间。当主Tomcat的session发生变化时,这些变化会被复制到Memcached中,反之亦然。在这种模式下,Tomcat服务器之间需要维护session一致性。
而在Non-Sticky模式下,所有的Tomcat节点都通过Memcached节点进行session读写。在请求到来时,如果没有可用的本地session,Tomcat会从备Memcached节点加载session;如果本地存在session,则使用本地session。请求处理完毕后,Tomcat将更新的session同步到主Memcached节点,从而实现session的共享。
总的来说,Memcached Session Manager的非粘性模式可以提供更为灵活和可扩展的session管理方式。此外,使用Kryo序列化可以进一步优化序列化性能和网络传输的数据量。在实际部署中,确保所有相关的jar包都已经被正确地添加到Tomcat的lib目录,并且在server.xml或context.xml中正确配置了Memcached Session Manager的相关参数,是实现session共享的关键步骤。
相关推荐


















咖啡Joven
- 粉丝: 7
最新资源
- 仿美团PC端Web开发实践:Vue框架应用
- 探索Andriy1991.github.io的HTML技术实现
- OpenWrt x86_64自动编译固件详解
- Web代理技术:实现高效网络缓存的关键
- 公司年终JS+HTML抽奖程序:快速随机与自动模式
- Java技术分享与交流平台TechGig
- Python数据定价模块的深入分析与应用
- 本地文件搜索工具的开发与应用
- jpegsrc.v9b.tar.gz:JPEG库的新版本发布
- CodeSandbox上实现neogcamp-markNine标记九分法
- 深入探索GitHub的InnerSource开源模型
- 掌握机器学习:Jupyter Notebook中的决策树算法
- 深入解析HTML在github.io的应用与实践
- 深入解析hannahtobiason.github.io中的CSS技术应用
- rsschool-cv:创意履历表模板设计
- TSQL查询技术:mssql-queries存储库解析
- Kotlin开发应用adfmp1h21-pet界面截图教程
- 2021数据三项全能赛事解析与Jupyter Notebook应用
- Java语言环境下的tejun仓库创建详细步骤
- 4-mergaite:HTML文件压缩技术的最新进展
- Navicat12数据库管理工具压缩包发布
- 掌握JavaScript构建全栈应用的精髓
- C语言实现HFizzBuzz算法分析
- 探索DIDIC技术的核心优势与应用