大型网站的高可用分析

“高可用性”(High Availability) 通常用来描述一个系统,经过特殊设计,减少停止服务的时间,从而使其服务保持高度的可使用性。

计算机系统的可靠性用平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才会发生一次故障。系统的可靠性能越高,平均无故障时间越长。可维护性用平均维修时间(MTTR)来度量,即系统发生故障后维修和重新恢复正常运行平均花费时间。系统的可维护性越好,平均维修时间越短。计算机系统的可用性定义为:MTTF/(MTTF+MTTR)*100%。

举例来说,淘宝网在2010年成交额为300亿,则每分钟成交额为5—10万,那么对淘宝来说,其后台系统的高可用,对企业运营非常重要。淘宝数据负责人宁海元指出,淘宝系统,可用性至少需要99.999%。那么对于taobao.com系统,在一年365天,系统停止服务时间为5分15秒。

1.2 确保高可用性

高可用性的衡量指标

%availability=(TotalElapsed Time – Sum of Inoperative Times) / Total Elapsed Time

其中:

TotalElapsed Time 为系统总时间,包括可提供服务时间+停止服务时间。

Sumof Inoperative Times 为停止服务时间,包括宕机时间+维护时间。

1.2.1 如何确保高可用

可用性越高越好,提高可用性主要从一下几个方面入手:

(1)系统架构

(2)容灾性

(3)监控报警

(4)故障转移

1.2.1.1 系统架构

系统架构,指整个网站后台系统的架构。好的系统架构,主要从下面几个方面考虑:

(1)操作系统的选择,从稳定性、安全性和可维护性考虑,unix和linux性能远远好于windows,从成本考虑,Linux远远低于windows 和unix。

(2)负载均衡器的选择,硬件负载均衡器性能和稳定性高于软件负载均衡器。但成本上,软件比如haproxy、LVS优于硬件(比如F5、Netscaler)。

(3)web server的选择,Nginx优于传统的Apache。

(4)各级缓存的选择与应用,varnish、squid、memcached。

(5)网站开发语言的选择,与开发有关,主要分为需要编译性的语言和不需要编译性的语言。

(6)数据库的选择,传统的关系数据库中,Oracle优于MySQL,但Oracle收费远远高于MySQL,实际上,Oracle有两种收费模式,一种是按用户数,一种是按主机处理器个数。而MySQL有免费的版本。

(7)底层存储设备的选择,比如机械磁盘和固态硬盘的选择。

(8)避免单点故障问题,在逻辑架构上,避免单点故障,避免出现割点。

1.2.1.2 容灾性

容灾性能对系统非常重要,比如服务器因为断电,导致数据文件的不一致,因为发生自然或者非自然灾害比如火灾导致的磁盘损坏,发生数据丢失等。所以容灾很重要,主要从以下几个方面提高容灾性能:

(1)服务器热备机的部署,当发生故障后,热备机能马上使用,提供服务。这里的服务器主要指web server 、应用服务器、数据库服务器等。

(2) 数据备份,比如做定期备份、热备份、增量备份,甚至需要做主从备份,来提高抗灾性能。并且从底层存储设备上进行备份,比如做RAID。

(3) 做双线网络交换,尽量优化设计网络,避免因为核心交换机故障,而影响服务。网络上避免单点故障。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyyfjz.html