读《大型网站技术架构》的一些总结(2)-获得高可用性

时间:2020-05-28 17:27:17   收藏:0   阅读:49

2. 系统架构优化-从可用性考虑

2.1 网站可用性度量与考核

(1) 可用性度量,一般用多少个9来度量网站可用性。49,99.99%时间网站可用,也就是一年将近53分钟不可用,就已经算是有自动恢复能力的高可用性了。一般两个9是基本可用,三个9是较高可用,五个9是极高可用。越到后面付出的成本增加越快,还需要运气加持。

(2) 可用性考核

一般的,故障分级如下:

最终按照权重分数分锅。

2.2 高可用的网站架构

目前的大型系统都会把各个模块按照功能职责分层。分层如下:

这样最大的好处是可以方便的按照职责建立集群,不同层次的集群采用不同的方法实现高可用:

2.3 应用层集群的高可用

(1) 负载均衡进行失效转移

当负责负载均衡的反向代理服务器提高心跳检测机制发现集群中某一台服务器失去响应时,则将其移除,将请求转移到其他服务器上,提高了可用性。

(2) 集群的session管理

集群环境下,session管理要比单机时难的多,因为要想办法让每台服务器的session一样。一般有一下几种方法:

2.4 服务层集群的高可用

服务层集群提供基础公共服务,也可以进行负载均衡,除此之外还有:

2.5 数据层的高可用性

数据是最宝贵的资产,数据的完整性、正确性是企业生存的命脉。数据库集群不同于无状态的服务层,当一个机器宕机后不能把原本访问它的请求落到其他机器上,因为数据库是有状态的,每台机器上存放的数据都不一样。还要注意数据库集群与分布式数据库的区别,集群是多个独立的数据库系统,分布式数据库则是多个节点组成的一个系统。

(1) 数据持久性

数据持久性除了将数据写入本地磁盘外,还要将数据同步到多个副本存放到不同的物理存储设备上,核心数据还要上传云端或异地设备上持久化存储,确保万无一失。发生灾害或者其他故障时就可以根据持久化的数据进行恢复。

(2) 数据一致性

当整个网站的数据库系统是由多个节点协作组成的(集群、主从、分布式),就有可能发生任意某两个间无法通信的问题,这时数据的一致性就可能被破坏,除非一旦有两个节点失联就停用整个数据库服务。上述问题其实有一个CAP理论:

CAP理论指出,三者不能同时满足,只能满足两者。P是必然要满足的,因为无法保证节点间的网络用不出错,何况对集群进行伸缩(增删节点)时也会需要暂停一些节点通信。一般大型网站会在CA中选择A,毕竟一个那么大的集群不能说停就停,优先保证可用性。所以有时会出现数据不一致的情况,如双十一商品超卖,这只能通过非技术手段解决了。

数据强一致:数据库中的数据总是处于一致的状态。数据用户一致:数据库中的数据不一定时刻一致,但是处理用户请求最终返回的数据通过纠错与校验是正确的。数据最终一致:返回给用户的数据也不一定是正确的,数据只是会在一定时间后自动恢复到正确的状态。

(3) 主从备份与失效转移

由于集群中不同节点的数据都不一样,无法进行失效转移,我们可以未每个集群节点(主节点)设置若干个从节点,从节点的数据与主节点同步。这样实现了数据的备份、冗余,读写还可以分离因为读操作可以专门落到从数据库,而主节点发生故障时,由于从节点的数据是一样的,可以将从节点升级为主节点代替,实现失效转移。

2.6 质量保证

在各层服务都优化给力的情况下,还要科学的管理网站保证质量。

(1) 发布

由于发布时服务器会经历停掉原服务,拉取最新代码,重新运行服务。这个过程会导致服务器无法访问,如果我们不希望这期间用户完全无法访问,可以先停掉集群中部分服务,升级完成后再停一部分,逐步完成整个集群的升级。

(2) 自动化测试

发布完成后要进行回归测试,人力测试的话速度慢、成本高、覆盖率低,一般采用脚本或者脚本化工具进行自动测试。

(3) 预发布验证

由于测试环境与生产环境的差别,最好再上线前进行预发布验证。预发布就是将代码发布到与正式环境一样的机器,但是不开放公网访问而是由内部人员内网访问测试。但是注意,预发布时操作的数据库是正式环境的,注意不要搞事情,一切操作都要按正式的来。

(4) 代码版本控制

科学、正确的使用版本控制工具,发布正确的代码版本。

(5) 灰度发布

灰度发布可以随时将运行的代码回滚到之前的某个版本,紧急情况可以直接回退到之前的稳定版本减少损失。

2.7 监控

没有监控,网站运行就像盲人骑瞎马,可用性无从谈起。

(1) 监控数据采集

(2) 监控管理

收集到各项数据后,就要进行分析,然后做出一些决定。

先求生存后谋发展,可用性是基础,在这基础上再谈安全性、高性能等。

原文:https://www.cnblogs.com/shen-qian/p/12981808.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!