大型网站技术架构:核心原理与案例分析阅读笔记四
大型网站核心架构要素之可用性
网站的可用性指标是网站架构设计中的重要指标,对外是服务承诺,对内是考核指标。所以说,一个高可用的网站架构是一个公司所需要具备的。而在影响网站可用性的众多因素中,硬件故障是常态,网站的高可用架构设计的主要目的就是保证服务器硬件故障时,服务依然可用、数据依然保存并能够被访问。
实现上述高可用架构的主要手段是数据和服务的冗余备份及失效转移,一旦某些服务器宕机,就将服务切换到其他可用的服务器上,如果磁盘损坏,则从备份的磁盘中读取数据。一个网站架构的基本分层模型是应用层、服务层、数据层,所以要实现上述高可用架构就是要实现应用的高可用、服务的高可用、数据的高可用。
高可用的应用。一是通过负载均衡进行无状态服务的失效转移,简单来说当多台服务器组成的集群中的某一台服务器宕机,负载均衡服务器通过心跳检测机制发现该服务器,随后将对该服务器的请求发送到这个集群的其他服务器上;二是应用服务器集群的Session管理,集群环境下,Session管理的主要手段有:1.Session复制,使集群中的每一台服务器都保存所有用户的Session信息;2.Session绑定,即利用负载均衡的源地址Hash算法将Session绑定在某台特定的服务器上,保证Session总能在这台服务器上获取,但是一旦存放Session的服务器宕机,那么该服务器上的所有Session都不复存在了,所以很少网站用这个算法。3.利用Cookie记录Session,这种方式简单易用,可用性高,但也有一些缺点限制4.Session服务器,利用独立部署的Session服务器集群统一管理Session,应用服务器每次读取Session,都访问Session服务器。
高可用的服务。可复用的服务和应用一样,也是无状态的服务,因此可以使用类似负载均衡的失效转移策略实现高可用的服务。除此之外,还有以下几种高可用的服务策略:分级管理、超时设置、异步调用、服务降级、幂等性设计。
高可用的数据。不同于高可用的应用和服务,一旦服务器宕机,数据访问请求不能任意切换到集群中的其他服务器上。这时不能单纯的使用失效转移机制,而是将数据备份和失效转移机制结合起来。而关于缓存服务的高可用性,我认为缓存服务不是数据存储服务,缓存服务是为了加快数据读取而产生的,解决缓存服务器宕机所带来的问题,不能通过提高缓存服务本身的高可用。