系统架构设计师重要知识点集-系统可靠性分析与设计

重点1:系统可靠性分析

要点1:可靠性相关基本概念

1、系统可靠性是系统在规定的时间、环境下完成规定功能的能力,也就是系统无故障运行的概率。

2、系统可用性是指在某个给定时间点上系统能够按照需求执行的概率。

3、软件可靠性与硬件可靠性是不等同的:

(1)复杂性:软件复杂性比硬件高,大部分失效来自于软件失效。

(2)物理退化:硬件失效主要是物理退化所致,软件不存在物理退化。

(3)唯一性:软件是唯一的,而两个硬件不可能完全一样。

(4)版本更新周期:硬件较慢,软件较快。

要点2:可靠性指标

1、平均无故障时间MTTF

,为失效率����=1/λ,λ为失效率

2、平均故障修复时间MTTR

,为失效率����=1/μ,μ为失效率

3、平均故障间隔时间MTBF

����=����+����

4、系统可用性

系统可用性系统可用性=����/(����+����)×100

要点3:串联系统与并联系统


重点2:系统可靠性设计

要点1:常用的可靠性保证技术

1、避错技术

2、容错技术

(1)容错技术涉及到的关键方式是冗余。

(2)冗余分为结构冗余(硬件冗余、软件冗余)、信息冗余(校验码)、时间冗余(重复多次进行相同的计算)。

(3)实现冗余的方式包括N版程序设计(静态冗余)、恢复块设计(动态冗余)、防卫式程序设计。

3、检错技术

(1)检错技术实现的代价一般低于容错技术和冗余技术,但明显的缺点是不能自动解决故障,出现故障后如果不进行人工干预,将最终导致软件系统不能正常运行。

(2)检错技术常见的实现方式:最直接的一种实现方式是判断返回结果,如果返回结果超出正常范围,则进行异常处理;计算运行时间也是一种常用技术,如果某个模块或函数运行时间超过预期时间,可以判断出现故障;还有置状态标志位等多种方法,自检的实现方式需要根据实际情况来选用。

(3)检错技术的处理方式大多采用“查处故障-停止软件运行-报警”的模式,但根据故障的不同,也有采用不停止或部分停止软件系统运行的情况,这一般由故障是否需要实时处理来决定。

4、降低复杂度技术

要点2:N版本程序设计

与通常软件开发过程不同的是,N版本程序设计增加了三个新的阶段:相异成份规范评审、相异性确认、背对背测试。

N版本程序的同步、N版本程序之间的通信、表决算法(全等表决、非全等表决、Cosmetie表决)、一致比较问题、数据相异性。

要点3:恢复块方法

1、设计时应保证实现主块和后备块之间的独立性,避免相关错误的产生,使主块和备份块之间的共性错误降到最低程度。

2、恢复块方法的关键是必须保证验证测试程序的正确性。

3、与N版本程序设计的比较:

恢复块方法 恢复块方法
硬件运行环境 单机 多机
错误检测方法 验证测试程序 表决
恢复策略 后向恢复:系统恢复到前一个正确状态,继续执行 前向恢复:使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况
实时性

要点4:防卫式程序设计

对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态并恢复到一个已知的正确状态中去。

实现策略:错误检测、破坏估计、错误恢复。

要点5:双机容错

1、双机热备份模式:主系统工作、备用系统同步主系统状态。

2、双机互备模式:同时提供不同的服务,心跳中断则接管。

3、双机双工模式:同时提供相同的服务,属于集群的一种。

发表评论