33 | Cluster组件:Tomcat的集群通信原理
该思维导图由 AI 生成,仅供参考
集群通信原理
- 深入了解
- 翻译
- 解释
- 总结
Tomcat集群通信原理主要通过组播(Multicast)实现,以实现集群中成员的维护和通信。组播技术允许一台主机向指定的一组主机发送数据报包,通过周期性发送组播心跳包,集群中的节点能够维护一个成员列表,并在一定时间内未发送组播报文的节点被认为已经崩溃。这种方式能够保证集群中的多个节点之间保持数据的一致性,如会话(Session)信息。Tomcat的Session管理支持将一个节点上的Session数据拷贝到另一个备份节点的方式,从而实现数据的同步拷贝。 Tomcat集群通信的配置方法包括通过TCP连接向其他节点传输Session数据,以及对Session管理组件DeltaManager进行优化配置。在配置中,BackupManager被推荐用于高效的数据拷贝,而ReplicationValve用于请求过滤。此外,对于部署多个节点的情况,需要修改Receiver的侦听端口,并且建议所有Tomcat节点采用相同的配置。 通过了解Tomcat集群通信的原理和配置方法,读者能够深入了解Tomcat集群是如何工作的,以及如何对集群进行优化配置,从而提高集群的性能和可靠性。文章还通过实例说明了Tomcat集群的工作过程,以及对Session的拷贝支持两种方式:DeltaManager和BackupManager。 ReplicationValve的配置也得到了解释,为读者提供了更多实用的信息。 总的来说,本文详细介绍了Tomcat集群通信的原理、配置方法和工作过程,为读者提供了全面的了解和实用的技术指导。
《深入拆解 Tomcat & Jetty 》,新⼈⾸单¥68
全部留言(14)
- 最新
- 精选
- QQ怪感觉这种方式应该在生产环境用的很少吧,大多数都是用redis集群来保存session
作者回复: 对的,Redis有额外安装维护开销,小的集群可以用Tomcat原生方案
2019-07-2511 - neohope老师您好,有两个问题想咨询一下: 1、采用DeltaManager模式后,如果主节点挂掉,存在新的主节点选举的这个过程吗?如果有的话,Tomcat是如何防止产生集群分裂(脑裂)的呢? 2、本节说的Tomcat集群部署,入口是Tomcat还是Apache啊? 之前只用过Apache做负载,后面放了Tomcat集群。但说实话,Tomcat session复制的效率还是太低了。 后面就直接Nginx+多个Tomcat,Session干脆放到了Redis里,效率高了很多。
作者回复: 1,Tomcat集群其实没有Zookeeper那样的选主机制,一台挂了就将请求发到用备份节点 2,小的集群可以用Tomcat原生方案,大集群还是用Redis
2019-07-2526 - chon生产中,如果机器多的话,很少用session复制吧
作者回复: 对的
2019-07-255 - 锦Tomcat的Session同步机制有两种: 第一是所有集群机器中都保存一份其他机器的数据 第二是备份模式,Session数据保存在任意两台机器中。 我的问题是游戏服务器之间的数据同步是否也可以采用类似的机制呢?其中有两个挑战:一是玩家数据比较大,二是事务如何处理
作者回复: 这个场景数据直接存数据库,用redis集群做缓存
2019-07-302 - -W.LI-好老师哈。那些操作一般不会涉及session变化。BackupManager实现高可用,和好多中间件的原理差不多。以前都是接入层一致性hash,没有启用session集群。这个session集群同步开销高么?一次只同步一个seesion还是批量打包的?Tomcat支持把session放在redis么?我项目是token+redis。
作者回复: Tomcat支持把Session存Redis的
2019-07-261 - a、今天的问题:我觉得因为一般静态资源不会涉及到session更新,所以就不需要拦截。还有个问题我想问下老师,如果我有四台机器A,B,C,D,设置了BackupManager,那A的备份机器会不会是B,B的备份机器是C,C的备份机器是D,D的备份机器是A?还是说如果A的备份机器是B,那C只能选择D做备份机器?
作者回复: A的备份机器是B,B的备份机器也可以是A。A和B只要不全挂掉就行。
2019-07-251 - 旭东(Frank)这个集群感觉只是教学版,不工程版。应该很少用于生产2019-08-1613
- 业余草这些方法感觉有些过时了。比如我们可以自己实现一致性哈希算法,也就是说,针对不同的会话,我们给他算一个hash,让它分配到同一个tomcat上。2019-07-3033
- 你的头发还好吗针对 ReplicationValve 设置 filter值,这些静态文件不会改变 session 状态,不需要进行session同步操作。 翻阅源码: if (!isRequestWithoutSessionChange(uri)) { sendMessage(session,manager); }2022-04-051
- James小集群或者一开始没集群但是很久后流量较大或者保证可用性/防止部署时单点故障时可以使用,不过大部分或者一开始就是集群都是redis session集群2021-03-221