Tomcat-对集群原理的一些思考

一个用户是否会读到另一个用户正在写但没写完的数据?所谓的脏读
不会的,因为一个session就对应一个用户,这是不会出现A用户读到B用户的session的。


另外假设有10个节点,当请求经过apache到节点1,然后创建一个session,然后容器一边发送session复制的通知(异步通知),
一边将相应数据写给用户。 假设发送的session数据还没达到节点2的时候,用户很快又访问到了节点2,此时就有问题了,会新创建一个session。
也就是说节点1和节点2都有一个session,但其实应该只有一份!
此时用同步发送机制就可以解决问题了。容器将session数据同步复制到节点2,再返回相应,这样就不会有问题了。
Tomcat-对集群原理的一些思考


各个节点之间的session数据拷贝可以用第三方序列化来做。
他们底层的membership组成员加入删除,是用byte[]来做的,byte[]数组里面严格固定了字段的含义,所以效率非常高,无需再优化了。