3.4、弹性(伸缩性)
如果 3 个系统 A 的实例还是满足不了大量请求,例如双十一,可以申请增加服务器,双十一过后,新增的服务器闲置,成了摆设,于是小明决定尝试云计算,在云端可以轻松的创建,删除虚拟的服务器,那样就可以轻松的随着用户的请求动图的增减服务器了。
3.5、失效转移上面的系统看起来很美好,但是做了一个不切实际的假设:所有的服务都是无状态的,换句话说,假设用户的两次请求直接是没有关联的。但是现实是,大部分服务都是有状态的,例如购物车。
用户访问系统,在服务器上创建了一个购物车,并向其中加了几个商品,然后服务器 1.1 挂掉了,用户后续访问就找不到服务器 1.1 了,这时候就要做失效转移,让另外几个服务器去接管,去处理用户的请求。
可是问题来了,在服务器 1.2,1.3 上有用户的购物车吗?如果没有,用户就会抱怨,我刚创建的购物车哪里去了?还有更严重的,假设用户登录过得信息保存到了该服务器 1.1 上登录的,用户登录过的信息保存到了该服务器的 session 中,现在这个服务器挂了,用的 session 就不见了,会把用户踢到了登录界面,让用户再次登录!
处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移,甚至无法使用。
怎么办?
一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致。
还有一种办法, 就是把几种状态信息存储在一个地方,让集群服务器的各个服务器都能访问到。
,