网站的可用性(Availalbity)描述网站可有效访问的特性(不同于另一个网站运行指标:Usability),后者强调的是网站的有用性,即对最终用户的使用价值,相比于其他的非功能性特性,网站的可用性更牵动人们神经,大型网站的不可用事故直接影响到公司形象和利益。
网站的可用性度量:QQ的可用性是4个9,即QQ服务99.99%可用,这以为着一年中最多53分钟不可用。网站不可用实践(故障实践) = 故障修复时间点 - 故障发现时间点,网站年度可用性指标 =(1 - 网站不可用时间/年度总时间) * 100% 。 大多数网站是2个9,即基本可用,年度不可用时间小于88个小时,3个9是较高可用,网站年度不可用时间小于9小时,4个9是具有自动恢复能力的高可用,网站年度不可用时间小于53分钟,5个9是极高可用性,年度不可用小于5分钟。
网站可用性考核,对外是服务承诺,对内是考核指标。分类权重表
分类 | 描述 | 权重 |
事故级故障 | 严重故障,网络整体不能用 | 100 |
A级故障 | 网站访问不畅或核心功能不可用 | 20 |
B级故障 | 非核心功能不可用,或者核心功能少数用户不能用 | 5 |
C级故障 | 以上故障以外的其他故障 | 1 |
故障分 = 故障时间(分钟) * 故障权重
高可用的网站架构:一个典型的网站设计通常遵循应用层,服务层,数据层的基本分层架构模型,即使是复杂的大型网站架构中,划分的粒度会更小更详细,结构复杂,服务器规模庞大。
WEB应用中将这些多次请求修改使用的上下文对象称作会话(Session),单机情况下,Session可由部署在服务器上的web容器(如Jboss)管理。在使用负载均衡的集群环境中,由于负载均衡服务器可能会将请求分发到集群任何一台服务器上,所以保证每次请求依然能够获得正确的session比单机要复杂很多。Session管理主要有以下几种手段:
1.session复制,在集群中的几台服务器之间同步session对象,虽然方法简单,但是集群规模较大时集群服务器需要大量通信用于复制session,占用服务器和网络大量资源,大型网站的核心应用集群就是数千台服务器,并不适用此方案。
2.session绑定,session绑定可以利用负载均衡源地址Hash算法实现,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上。这种方法又被称为会话粘滞,但是session绑定的方案显然不符合我们对系统高可用的需求,因为一旦某台服务器宕机,那么该机器上的session也就不复存在,因此虽然大部分负载服务器都提供该算法但很少有网站利用这个算法进行session管理。
3.利用cookie记录session:将session记录在客户端,每次请求服务器的时候,将session放在请求中发送给服务器,服务器处理完请求后再将修改过的session响应给客户端。利用cookie记录session缺点是,受cookie大小限制,能记录的信息有限,每次请求都需要传输cookie影响性能,如果用户关闭cookie访问就会不正常,但是由于cookie的简单易用,可用性高,支持应用服务器的线性伸缩,而且大部分应用需要记录的session信息又比较小。因此事实上,许多网站都或多或少的使用cookie来记录session。
4.session服务器:利用独立部署的session服务器(集群)统一管理session,应用服务器每次读写session时都访问session服务器。这种方案事实上是将应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器,然后针对这两种服务器的不同特性分别设计其架构。
对许多网站来说,数据是其最宝贵的物质资产,硬件可以购买,软件可以重写,但是多年运营积淀下的各种数据(用户数据,交易数据,商品数据),代表着历史,已经成为过往不能重来,一旦失去,对网站的打击是毁灭性的。
高可用的数据有以下几个含义:1.数据持久性,数据可访问性,数据一致性,CAP原理认为,一个提供数据服务的存储系统无法同时满足数据一致性,数据可用性,分区耐受性这三个条件。
数据备份是一个古老而有效的数据保护手段,早期的数据备份手段主要是数据冷备,定期将数据复制到某种存储介质(磁带,光盘),上并物理存档保管。冷备的优点是简单和廉价,成本和技术难度都比较低,缺点是不能保证数据最终一致性。因此,数据冷备作为一种传统的数据保护手段,依然在网站日常运维中使用,同事在网站实时在线业务中,还需要进行数据热备。热备分为两种,异步热备和同步热备方式。异步热备是指多份数据副本的写入操作异步完成,应用程序收到数据服务系统的写操作成功响应时,只写成功了一份,存储系统将会异步地写其他副本。在该方式下,存储服务器分为主存储和从存储服务器,应用程序正常情况下只连接主存储服务器,数据写入时,由主存储服务器的写操作代理模块将数据写入本机存储系统后立即返回写操作成功响应,然后通过异步线程将写操作数据同步到从存储服务器。
同步方式是指多份数据副本的写入操作同步完成,即应用程序收到数据服务系统的写成功响应时,多份数据都已经操作成功。但是当应用程序收到数据写操作失败的响应时,可能有部分副本或者全部副本都已写成功了。