一,系统的可靠性
1. 定义:在特定时间内和特定条件下系统正常工作的相应程度,即(degree of suitability)。
2. 可靠性的测量方式:系统的可用性(系统的利用率的平均值)。
3. 可用性(A)的计算方法:
A = MTBF /(MTBF+MTTR)
MTBF = MeanTime Between Failures 平均无故障时间(故障间隔平均时间)
MTTR = MeanTime To Repair. 平均故障修复时间
4. 可靠性的实现:可靠性通常是通过容错设计来实现的。
二,容错技术(redundancy)
1. 容错(Fault-tolerance)定义:
系统在出现故障时,能够自动检测出来并使系统能够自动恢复正常运行。
2. 容错技术:在一定程度上容忍故障的技术。
3. 容错系统:采用容错技术的系统,当系统因某种原因出错或者失效,系统能够继续工作,程序能够继续运行,不会因计算机故障而中止或被修改,执行结果也不包含系统中故障引起的差错。 容错技术也称为故障掩盖技术(fault masking)。
4. 冗余技术:
实现容错技术的重要技术,它是以增加资源的方式来换取可靠性。冗余需要消耗资源,因此在设计时,应该在系统的可靠性与资源消耗之间进行权衡和折中。由于冗余资源的不同,冗余技术可以分为以下几种方式:
a) 硬件冗余:增加线路,设备,部件,形成备份。
b) 软件冗余:增加程序,一个程序分别用几种途径编写,按一定方式执行,分段或多种表决。
c) 信息冗余:增加信息数据位数,检错,纠错。
d) 时间冗余:指令重复执行,程序回卷技术。
5. 容错软件:
a) 对自身错误的影响具有屏蔽作用。
b) 可以从错误恢复到正常状态。
c) 发生错误时能完成预期的功能。
三,硬件冗余
1. 双机热备(针对服务器故障的解决方案):
a) 对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另外一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能够提供持续服务。
b) 双机热备主要指基于active(主动)/standby(备用)方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过双机软件的诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。
c) Active/standby工作模式结构
i. 两节点的Active/Standby模式是HA中最简单的一种,两台服务器通过双心跳线路组成一个集群。应用Application联合各个可选的系统组件如:外置共享的磁盘阵列、文件系统和浮动IP地址等组成业务运行环境
ii. 此模式的优缺点如下:
1. 优点:当node1发生故障时,node2完全接管应用,能够保证应用运行时对容错能力的要求。
2. 缺点:node2在node1无故障工作时,处于“闲置”状态,造成服务器资源的巨大浪费。
d) Active/active工作模式结构
i. 支撑用户业务的数据库和应用程序在正常状态下分别在两台节点上运行,各自有自己的资源,比如IP地址、磁盘阵列上的卷或者文件系统。当某一方的系统或者资源出现故障时,就会将应用和相关资源切换到对方的节点上.
ii. 最大优点是不会有服务器的“闲置”,两台服务器在正常情况下都在工作。但如果有故障发生导致切换,应用和数据库将放在同一台服务器上运行,由于服务器的处理能力有可能不能同时满足数据库和应用程序的峰值要求,这将会出现处理能力不够的情况,降低业务响应水平.
e) 何时使用双机热备
正确的方法是分析系统的重要性以及使用系统的用户对服务中断的容忍程度。也就是说,用户能够接受多长时间恢复服务。服务在不同的时间恢复造成的影响的程度。
f) 双机热备系统切换的时间:
双机热备不是无缝的,不中断的。它需要有一个切换过程,这个切换过程一般需要1分钟左右。它能够保证在系统出现故障时,尽快恢复正常服务,使业务不受到影响。
四,软件冗余
软件冗余主要是通过提供足够的冗余信息和冗余程序块,使系统在实际运行时能够及时发现程序设计错误,采取补救措施,从而提高系统的可靠性,保证系统的正常运行。常用的软件冗余方法有:
1. 恢复块方法
这里涉及的恢复方法主要有两种:前向恢复和后向恢复。前向恢复是指使当前的计算继续进行下去,把系统恢复成连贯的正确状态,当然要做到这点,必须要有错误的详细报告和记录。所以,在设计还程序时必须要考虑到这点。另外一种是后向恢复,即是指系统恢复到上一个正确的状态,继续执行。
下边具有说说后向恢复的实现过程。
在系统中提供具有相同功能的多个程序块,包括一个主块和多个后备块,每个程序块就是一个执行完整的程序段,主块首先投入运行,运行结束后,测试运行的正确性。如果测试通过,则直接输出正确结果,如果测试没有通过,则进行系统恢复,恢复后系统由一后被程序块执行,这样可以一直循环到最后所有的后备块,或某个程序故障不再我们程序的预料之中,从而导致不可恢复的结果。具体流程图如下:
2. N-版本程序设计
N版本程序设计,是一种静态的故障屏蔽技术,采用前向恢复的策略,其设计思想是用N个具有相同功能的程序同时执行一项计算,结果通过多数表决来选择。其中N份程序必须由不同的人独立设计,使用不同的方法,不同的设计语言,不同的开发环境和工具来实现。目的是减少N版本软件在表决点上相关错误的概率。另外,由于各种不同版本并行执行,有时甚至在不同的计算机中执行,必须解决彼此之间的同步问题,主要的执行流程如下:
3. 防卫式程序设计。
防卫式程序设计的基本思想是在程序设计中包含错误检查代码和错误恢复代码。这样设计是为了错误一旦发生,能够撤销错误状态,恢复到正确状态。防卫式程序设计主要包括错误检测,错误估计和错误恢复。错误估计很重要,因为错误检测和错误恢复的问题是最容易发现的,通过小组代码评审可能发现问题,但是错误估计,如果不全面,不准确,遗漏了可能的情况,就会出现故障超出预料的事情。这个时候就达不到容错的目的。