• Tomcat中负载的Session解决办法


    Tomcat进行请求的Session解决方式总体来说有三种,

    (1)使用Nginx或者Apache反向代理工具进行用户请求的分机器,在Tomcat的Engine中的标签中加入jvmRoute属性,指定对应的负载到这个机器上就可以了,即称为有粘性的Session。

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

      Nginx对应原理:nginx_upstream_jvm_route(nginx扩展,推荐使用)

      nginx_upstream_jvm_route是一个nginx的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。

      简单来说,它是基于cookie中的JSESSIONID来决定将请求发送给后端的哪个server,nginx_upstream_jvm_route会在用户第一次请求后端server时,将响应的server标识绑定到cookie中的JSESSIONID中,从而当用户发起下一次请求时,nginx会根据JSESSIONID来决定由哪个后端server来处理。

      还可以使用ip_hash的方式来进行,但是,不推荐这样的方式,所以,总体来说,这个方式是可以进行负载的,也是解决Session问题。

      通常,更推荐大家使用第三方的代理进行Session的分机器方式,这样在高可用方面可能稍微欠缺,但是,如果不是很大的项目情况,不会出现太大的问题。

      配置方式:待后面进行实际亲测后贴出来

      别人配置方式地址:http://www.linuxidc.com/Linux/2013-06/86446.htm (后面将验证改配置是否有效)

      这里也讲了一些价值的东西:http://hanqunfeng.iteye.com/blog/1920994

    (2)使用Tomcat自带的功能,进行服务间的Session复制,但是,Session复制可以使用两种方式,修改后全量的复制,还是修改后增量复制,对应的Tomcat的类,DeltaSession(增量)、ReplicatedSession(全量,暂时在Tomcat9源码中未找到),这里的配置还有待添加。即称为无粘性的Session。

       配置方式:待后面进行实际亲测后贴出来

      别人配置方式地址:http://www.cnblogs.com/hanxianlong/p/3456780.html (后面将验证改配置是否有效)

    (3)将Tomcat的Session管理分离出来,进行统一管理,将Session放入到Redis或其他缓存中去。

      这里需要去使用代码实现,也可以使用第三方插件实现,名称:tomcat-redis-session-manager 地址:https://github.com/jcoleman/tomcat-redis-session-manager

  • 相关阅读:
    vscode中执行gulp task的简便方法
    5G即将到来,你还会购买4G手机吗?
    小屏幕手机汇总
    NoSQL数据库的分布式算法详解
    如何在网页界面设计中正确的留出空白空间?
    iconfont的三种使用方式
    MySQL修改密码方法汇总
    Docker镜像与容器
    微观经济学
    经营的原点 书评
  • 原文地址:https://www.cnblogs.com/rainy-shurun/p/5842660.html
Copyright © 2020-2023  润新知