/**
*@简介:可用性关系到网站的生死,甚至比性能更重要,本文介绍网站常用的保证其可用性的技术。
*@创建时间:2014/7/14
*/
一、 什么是网站可用性
很简单,可用性就是网站的可访问性。它的度量指标是正常运行时间占所有运行时间的比例。测量方式是实际运行一个服务,测量其不可用的时间。
网站为什么不可用?主要的原因是服务器硬件故障,比如磁盘,比如网络等。那么,所谓的保证网站的可用性,就是要在服务器可能因硬件故障而怠机的前提下设计保证网站可用性的网站架构。
二、 保证网站可用性的基本方法
网站可分为3个层次:
应用层:负责主要的业务逻辑
服务层:提供公用(通用)的服务
数据层:提供数据的读写
每个层次的系统,因为其所提供的功能不同,使用的可用性技术也有所区别。概要的可用性技术如下表所示:
系统 |
可用性技术 |
应用层 |
负载均衡 |
服务层 |
负载均衡 |
数据层 |
冗余备份 |
三、 应用层的可用性技术
对于无状态的请求,当应用集群中的某台服务器当机时,负载均衡服务器会通过心跳检测技术检测到,它会将怠机的服务器从集群中移除,并进行失效转移,即将原来转发给该服务器的请求转发给其他服务器。
对于有session状态的应用集群,比较成熟的方法是使用session服务器集群将状态和应用分离,以使应用服务器怠机不影响session。当然还有别的方法。
四、 服务层的可用技术
基本的方法也是使用和应用层类似的负载均衡技术。此外还有一些实践中产生的高可用性技术或策略:
服务器按业务的重要程度进行分级管理;
设置超时时间以及时通知应用;
异步调用以使任务在时间顺序上解耦;
服务降级以扛住高峰并发压力;
使用幂等设计保证应用在重复调用服务时产生相同的结果。
五、 数据层的可用技术
基本的方法当然是备份了。备份分为冷备份和热备份。冷备份指定期备份,缺陷是不能保证数据始终一致和不能保证数据可用性(在切换到备份的过程始终可访问,并且在用户无感知)。热备份指实时备份,即数据写入时即备份到其他存储空间中去。热备份又可分为:
异步热备份:先写入一台服务器后即返回成功的响应,至于备份到其他机器,是之后再异步地进行。这就可能有后续写操作失败的可能。
同步热备份:同时写入多台平等的机器,都写成功了才返回。由于采用了并发写的技术,速度上和异步的方式差不多。
另外值得一提的是CAP原理:
数据系统无法同时满足数据一致性、可用性和分区耐受性(跨网络区域的伸缩性)。
因此,大多数网站选择牺牲部分一致性。
六、 从软件方面保证可用性
网站发布采用优雅发布(即平滑过渡,集群中的机器一部分一部分地逐渐发布),需要知道的是,网站发布时,实际上必须重启(或中断)应用系统,这等于怠机的效果。
采用web自动化测试保证质量;
进行预发布验证;(在和线上环境一样的预发布服务器上进行发布并检查结果)
代码控制,一般使用主干发布,分支开发;
使用火车发布模型的自动化发布,提高发布效率,当然该模型必然存在一些问题;
使用灰度发布,有2个内内涵,一个其实指的就是优雅发布,另一个指AB测试。
七、 进行网站监控以保证可用性
监控需要采集的数据包括:
用户行为日志(服务端采集和客户端采集是2种采集手段)
服务器性能监控(OP负责服务器系统基本性能的采集)
运行数据报告(需要RD加入特定的数据采集逻辑)
八、 参考资料
《大型网站技术架构-核心原理与案例分析》
===============================================================================
PS:我们是谁?我们是天边流云,有不成韵律的诗云:
《流云》
我们是天边漂泊的流云
常怀着游子的愁绪
我们曾贪慕青天的高远
也会迷恋新月的柔情
但终有一天我们寻到了故乡
哦,原来她正是这满目疮痍的大地
于是,我们等待风起时把我们连成一片
甘愿化成雨水,浇灌大地
更多…请见流云博客:http://thestrayclouds.blogspot.ae/(无法访问请发邮件到[email protected],我们将定期查看邮箱并告诉您访问方法)
===============================================================================