一、网站可用性度量
1、网站不可用性度量:网站不可用也称为网站故障,业界常用多少个9来衡量网站的可用性。
2、网站可用性考核
二、高可用性网站架构
1、应用层
位于应用层的服务器通常为了应对高并发的访问请求,会通过负载均衡设备将一组服务器组成一个集群对外提供服务,当负载均衡设备通过心跳检测等手段监控到某台
应用服务器不可用时,就将其从集群中剔除,并将请求分发到集群中其他可用的服务器上。
2、服务层
服务层与应用层类似,只是负责的方向不同,应用层主要与用户交互,服务层则接受来自应用层的请求,处理业务,实现与数据层的交互。
3、数据层
数据层的服务器比较特殊,数据服务器上存储这数据,为了保证服务器宕机时数据不丢失,数据访问服务不中断,需要在数据写入时进行数据同步复制,将数据写入多台服务器,实现数据冗余备份。
当数据库宕机时,应用程序将切换到有备份数据的服务器上。
三、高可用的应用
1、通过负载均衡进行无状态的服务失效转移
2、应用服务器集群的Session管理:
- Session复制:网络传输大;内存要求高
- Session绑定:负载均衡利用hash算法总是将来自同一IP的用户分配到同一个服务器上。如果这个服务器宕机,那么这个用户的会话就会丢失。
- 利用cookie记录session:需要在客户端和服务端来回传输;cookie容量小,记录信息比较小;用户也有可能禁止使用cookie;
- Sesssion服务器:提供集中的session服务器来存储会话,可以部署在缓存,内存数据库中。
四、高可用的服务
1、分级管理:核心应用与服务使用最好的硬件;服务部署隔离,低优先级的服务通过启动不同的线程或部署在不同的虚拟机上进行隔离。
而高优先级的服务部署在不同的物理机上,核心服务和数据甚至部署在不同城市的数据中心。
2、超时设置:设置服务调用的超时时间,一旦超时,通信框架就抛出异常。
3、异步调用:通过消息队列等异步方式,避免一个服务失败导致整个应用失败的情况。
4、服务降级:拒绝服务和关闭功能。拒绝优先级低的服务,关闭不重要的功能。
5、幂等性设计:服务重复调用在所难免,如何保证重复调用时操作结果的正确是非常关键的,因此必须保证重复调用和调用一次产生的结果相同,即服务具有幂等性。
服务幂等型有时具有天然性,比如将用户性别设为男性,不管设置多少次,结果都是一样,但是对于转账交易等操作,问题就变得复杂起来,需要通过交易编号等信息
进行服务调用有效性校验,只有有效的操作才能继续执行。