前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Tomcat内置的Session复制方案实现Tomcat集群Session共享

用Tomcat内置的Session复制方案实现Tomcat集群Session共享

作者头像
用户1289394
发布2021-02-05 14:33:27
1.1K0
发布2021-02-05 14:33:27
举报
文章被收录于专栏:Java学习网

实现过程

第1步

修改tomcat的server.xml文件,在 节点下,添加以下内容:

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">

<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>

<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

<MembershipclassName="org.apache.catalina.tribes.membership.McastService"address="228.0.0.4"

port="45564"frequency="500" dropTime="3000" />

<!-- 这里如果启动出现异常,则可以尝试把address中的"auto"改为"localhost" -->

<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"address="auto" port="4000"

autoBind="100"selectorTimeout="5000" maxThreads="6" />

<SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>

</Channel>

<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>

<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"tempDir="/tmp/war-temp/"

deployDir="/tmp/war-deploy/"watchDir="/tmp/war-listen/" watchEnabled="false" />

<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

1234567891011121314151617181920

第2步

在项目的web.xml中添加如下节点:

<distributable/>

优缺点

优点

Java代码上不需要做任何修改

缺点

依赖应用服务器容器,这里是Tomcat,其他的容器是使用不了的;

适合小集群,不适合大集群,因为Session的复制是 all toall的,每个Tomcat都会存储其他的Session,会造成很大的资源浪费;

在高并发的情况下延迟较为严重且占用网络资源。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java学习网 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档