看了《大型网站技术架构》这本书之后,吸取了其中的精华,对网站的高可用议题进行了一遍梳理。如下将从高可用的思路,衡量标准,实施方案来做总结。
对高可用的理解
一个系统能保证不论有多少并发量,都能够正常提供服务,而不是出现卡死,报错,网站无法访问等问题。
如何衡量网站的可用程度
度量因子 | 因子描述 |
---|---|
网站不可用时间 | 网站不可用时间 = 故障修复时间点 - 故障发现时间点 |
故障级别 | 级别按照故障范围的大小,功能轻重,影响的用户量大小来衡量 |
如何实施
网站服务按照业务类型被分为应用层、服务层、数据层,高可用的方案将贯彻到这三层架构模型中。
前景因素:
- 昂贵的单机硬件设备。由于单台机器硬件设备约优越,越昂贵,所以采用多台廉价服务器,联合部署应用提供服务。
- 廉价硬件常出现故障。
高可用设计目的:
保证硬件故障时依然能保证系统能正常提供服务,数据不被丢失。
实现高可用遇到的问题及解决方案:
三层架构中要解决的问题及对应的解决方案
首先集群+负载均衡,鸡蛋不要放在同一个菜篮子里,这也是高可用思想的灵魂。
其次网站结构从上往下,权重依次递增,需要分配的硬件资源和策略有所权衡。例如数据层,数据若存放一处,突然宕机或者磁盘受损,将影响整个站点的使用,这是难以挽回的局面。
缓存与数据库的关系
错误观念:缓存承担大部分数据读取访问服务,应提高缓存服务高可用。
根本解决方案:缓存的宕机,不应该影响数据库数据。所以缓存只存储数据库数据的副本,数据库会从云缓存中申请缓存资源。