系统架构设计师-系统可靠性分析与设计

  • Post author:
  • Post category:其他



目录


一、可靠性相关基本概念


二、可靠性指标


1、串联系统与并联系统可靠性指标计算


2、混合系统


三、可靠性设计


1、影响软件可靠性的主要因素:


2、增加可靠性的解决方案


2.1 避错技术


2.2 降低复杂度设计


2.3 检错技术


2.4 容错技术


3、双机容错


一、可靠性相关基本概念



【可靠性】


:可靠性是软件系统在应用或系统错误面前 ,在意外或错误使用的情况下维持软件系统的功能性的基本能力。



【可用性】


:可用性是系统

能够正常运行的时间比例



软件可靠性 ≠ 硬件可靠性

(1)

复杂性

:软件复杂性比硬件高,

大部分失效来自于软件失效

(2)

物理退化

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

(3)

唯一性

:软件是唯一的,每个COPY版本都一样,而两个硬件不可能完全一样。

(4)

版本更新周期

:硬件较慢,软件较快。

二、可靠性指标


【失效率】

:(λ)λ = N / T,N表示在某个时间段内失效的总数,T则是相应时间段的总时间。


【平均无故障时间】

:(MTTF)MTTF = 1 / λ,λ为失效率


【平均故障修复时间】

:(MTTR)MTTR = 1 / μ,μ为修复率


【平均故障间隔时间】

:(MTBF)MTBF = MTTR + MTTF


【系统可用性】

:MTTF / (MTTR + MTTF)* 100%


在实际应用中一般MTTR很小,所以通常认为MTBF ≈ MTTF。

1、串联系统与并联系统可靠性指标计算



串联:



可靠性:


R = R1 * R2 * … * Rn



使效率近似公式:


λ = λ1 + λ2 + … + λn



并联:



可靠性:


R = 1 -(1 – R1)*(1 – R2)* …*(1 – Rn)

2、混合系统

三、可靠性设计

1、影响软件可靠性的主要因素:

(1)软件的开发方法和开发环境(2)运行环境

(3)


软件系统的规模


(4)软件的内部结构(5)软件的可靠性投入

2、增加可靠性的解决方案

2.1 避错技术

例如:使用CMMI(能力成熟度模型集成)规范管理过程、应用测试等。

2.2 降低复杂度设计

设计层面降低系统复杂度。

2.3 检错技术

出错后报警,人工处理,成本较低。

2.4 容错技术

(1)

N版本程序设计(静态冗余)

多个版本同时计算获得到结果,通过表决器算法最终确定采用结果。主要应用在可靠性要求极高的场景,成本高。例:飞行控制系统、高铁信号系统。

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

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

(2)

恢复快设计(动态冗余)


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

必须保证验证测试程序的正确性。



【N版本程序设计与恢复快方法区别】



前向恢复:


使当前的计算继续下去,把系统恢复成连贯的正确状态,弥补当前状态的不连贯情况。



后向恢复:


系统恢复到前一个正确状态,继续执行。

(3)

防卫式程序设计

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

实现策略:错误检测、破坏估计、错误恢复。(例:代码中 try / catch 函数)


冗余:

(1)结构冗余(硬件冗余、软件冗余)

(2)信息冗余(校验码)

(3)时间冗余(重复多次进行相同计算)

3、双机容错


(1)双机热备模式(主系统、备用系统)


(2)双机互备模式(同时提供不同服务,心不跳则接管)


(3)双机双工模式(同时提供相同的服务,集群的一种)



双机模式是集群的前身



版权声明:本文为weixin_42368597原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。