作为国内最大的B2C网站,其网站架构一直承载着数据量高速增长压力,要保证良好的负载和流程的使用体验,一个可伸缩性的高性能网站架构必不可少。
一、应用无状态
一个系统的伸缩性的好坏取决于应用的状态如何管理。试想一下,假如我们在session中保存了大量与客户端的状态信息的话,那么当保存状态信息的 server宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问题,而通常所说的集群,不仅有负载均衡,更重要的是要有失效恢复 failover,比如tomcat采用的集群节点广播复制,Jboss采用的配对复制等session状态复制策略,但是集群中的状态恢复也有其缺点,那就是严重影响了系统的伸缩性,系统不能通过增加更多的机器来达到良好的水平伸缩,因为集群节点间session的通信会随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,我们需要保证应用的无状态性,这样集群中的各个节点来说都是相同的,从而是的系统更好的水平伸缩。
