zoukankan      html  css  js  c++  java
  • Tomcat集群Cluster实现原理

    一、Tomcat集群

            Tomcat集群的问题之一是如何处理Session,Session是有状态的,请求到了Tomcat,后续流传是要根据上下文(Context)来进行的。我们可以改造应用改为无状态的,但是这个对应用的要求比较高,或者有些就不可能这样实现。
     

    二、Session处理

            1、比较常规的做法是把Session存到Redis里面,集群里面的每台主机都能访问。
            2、把每台主机的Session复制给其他的主机。
     

    三、Tomcat原生处理方式

            Tomcat原生自带的处理方式就是把每台机器的Session复制给其他主机,或者优化处理了一下,指定一台备用机器,每台主机把Session都复制到备用机器,这样也能把Session同步到每一台机器
     

    四、具体实现方式

           这里面用到了网络中的组播技术,要理解组播,我们先看一下什么是单播、广播。组播是为了解决单播和广播的问题而出现的。

          1、单播在发送者和每一接收者之间实现点对点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同数据包。如果有大量主机希望获得数据包的同一份拷贝时,将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。

          2、广播指在IP子网内广播数据包,所有在子网内部的主机都将收到这些数据包。广播意味着网络向子网每一个主机都投递一份数据包,不论这些主机是否乐于接收该数据包。所以广播的使用范围非常小,只在本地子网内有效,通过路由器和网络设备控制广播传输。

          3、组播在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个接收者传输相同的数据,也只需复制一份相同的数据包。它提高了数据传送效率,减少了骨干网络出现拥塞的可能性。组播解决了单播和广播方式效率低的问题。当网络中的某些用户需求特定信息时,组播源(即组播信息发送者)仅发送一次信息,组播路由器借助组播路由协议为组播数据包建立树型路由,被传递的信息在尽可能远的分叉路口才开始复制和分发。

     

    五、总结

           感觉Tomcat选择组播来实现集群是一种比较实用的考虑,性价比挺高的,不需要额外的组件来支持,低配置两台机器就可以实现,基于已有的基础实施,网络中已经实现了组播功能,适合比较小型的,不是高并发的系统。
  • 相关阅读:
    java中next()、nextInt()、nextLine()区别
    原码、反码、补码及移位运算
    微信小程序开发流程(适用于新手学习)
    Dubbo 常用的容错机制
    分布式系统性能注意点
    陌上人如玉,公子世无双!
    五步工作法
    四个凡是
    Javacpu 和内存问题排查步骤
    开启JMC功能
  • 原文地址:https://www.cnblogs.com/EllisQian/p/15223575.html
Copyright © 2011-2022 走看看