Tomcat集群

一、Apache Tomcat Clustering(Tomcat自带集群)

  1. 进入tomcat官网http://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.html(根据自己的tomcat版本进行选择)找到相应的位置,将以下内容复制到tomcat中的server.xml的响应节点
    在这里插入图片描述
  2. 根据文档说明将<distributable/>节点插入响应项目的web.xml中
    在这里插入图片描述
  3. 以上即完成简单的Tomcat集群搭建
  4. 原理:部署的Tomcat间会做一次session对比数据的一致性,如果不一致则会进行网络传输。因此会存在如下两个问题:
    (1)session之间的对比是通过笛卡尔积对比,速度非常慢;
    (2)网络传输会消耗很大的资源
    综上:不推荐使用

二、JWT等类似机制

jwt方式并不在tomcat集群方式之中,而是变相的完成tomcat集群完本要完成的东西,实现了tomcat间session的共享。

三、MSM(Memcached Session Manager用内存管理session)统一Session管理

这种方式是将请求的session全部放入统一的Memcached区域,避免了Tomcat之间的session对比和数据传输。
在这里插入图片描述

3.1、memcached会话管理器

memcached-session-manager是一个tomcat会话管理器,它将会话保存在memcached或Redis中,用于高可用性,可伸缩和容错的Web应用程序。它支持粘性sticky非粘性non-sticky配置,目前正在使用tomcat 6.x,7.x,8.x和9.x. 对于粘性会话,支持会话故障转移(tomcat崩溃),对于非粘性会话,这是默认值(默认情况下,不同的tomcats为不同的请求提供会话)。还通过迁移会话来支持memcached故障转移(memcached崩溃)。也不存在单点故障,因此当memcached失败时,会话不会丢失(但可以在tomcat或其他memcached中使用)。
在这里插入图片描述

3.2、通用配置

3.2.1、非粘性
  1. 引入依赖包(相关jar包下载见:https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration --‘Configure tomcat’)
  2. 配置Tomcat/conf/context.xml
<Context>
  ...
  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.1.17:5555,n2:192.168.1.17:6666" //配成自己的服务ip和端口
    sticky="false"   //非粘性
    sessionBackupAsync="false"
    lockingMode="auto"   //改为auto
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>
  1. 获取Memcached存储内容
    stats items
    stats cachedump [itemIndex] [0] (0表示查找全部)
3.2.2、粘性(Tomcat数量少,用的人少的时候效率高)
  1. 指定sticky为true
  2. 关闭lockingmode
  3. 修改server.xml -> Engine -> jvmRoute
  4. failoverNode
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.1.17:5555,n2:192.168.1.17:6666" //配成自己的服务ip和端口
    sticky="true"   //粘性
    sessionBackupAsync="false"
    failoverNode="n1"   //在Memcached出问题后起作用
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>

四、Tomcat+Redis统一Session管理

详见:https://blog.csdn.net/weixin_43192102/article/details/89848277

如何选择:如果对性能要求高选择MSM,如果对数据持久化要求高选择Tomcat+Redis

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值