目录
1、可靠性相关基本概念
- 系统可靠性在规定时间内及规定的条件下完成规定功能的能力,也就是系统无故障运行的概率。有因素能够运行。论文提可靠性。
- 系统可用性是指在每个规定时间点上,系统能够按照需求执行的概率。偏向结果,执行概率。质量属性提可用性。
软件可靠性,不等于硬件可靠性。软件可靠性和硬件可靠性对比:
- 复杂性。软件复杂性高。大部分时效都来自于软件失效。
- 物理退化。硬件失效主要是物理退化,软件不存在物理退化。
- 唯一性。真是唯一的版本,每个copy版本都一样,而两个硬件不可能完全一样。
- 版本更新周期。硬件较慢,软件较快。
可靠性指标:
平均无故障时间 MTTF,无故障时间/总时间
平均故障修复时间 MTTR,故障时间/总时间
平均故障间隔时间 MTBF,MTTF+MTTR
系统可用性 ,MTTF/(MTTF+MTTR)。
在实际应用中,一般MTTR很小,所以通常任务MTBF约等于MTTF。
2、系统可靠性计算
串联并联系统
串联可靠性计算: 可靠性 R= R1*R2 * R3。每个可靠性相乘。
失效率近似公式:每个失效率相加。
并联可靠性计算: R= 1 -(1-R1)*(1-R2)*(1-R3)。1减去失效率。
混合模型:并联看成一个整体进行计算。
3、软件可靠性设计
设计技术包括:
- 避错技术。提前预知进行避错,高内聚低耦合,结构简单明了。
- 容错技术。包容错误,冗余方案。能够自动处理故障。
- 检错技术。运行中检测出错后报警,人工处理,成本较低。不能自动解决故障。
- 降低复杂度设计。
容错技术中的冗余形式:
- 结构冗余:硬件冗余,软件冗余。
- 信息冗余:校验码。同类信息用多个信息类型表达,可能会出现多个信息对冲。比如周一 19:00-20:00(上午)。
- 时间冗余:重复多次进行相同的计算。多次进行计算,比如数钱。
容错技术中的冗余方案:
- N版本程序设计(静态冗余),前向恢复。开发N个版本(多个开发开发)并行运行。多个版本得到结果,然后通过表决器(表决算法)得到结果,输出正确结果或进行异常处理。
- 恢复块设计(动态冗余),后向恢复。主块(验证测试程序检测)不合格,由后备块执行延续,不合格继续由后背块处理。
- 防卫式程序设计。对于程序中存在的错误和不一致性,通过在程序中包含错误检查代码和错误恢复代码。 使得一旦错误发生,程序能撤销错误状态,引导恢复到一个已知的正确状态。例如:try catch。
实现策略:错误检测,破坏估计,错误恢复。
双机容错
- 双机热备模式。(主备系统,即主干活,备用不干活,采用心跳等策略,主没反应然后备用干活)
- 双机互备模型。(同时提供不同的服务,服务器运行不同的服务,心不跳则接管)
- 双机双工模型。(同时提供相同的服务,集群的一种)。
可靠性设计 集群:可从可伸缩性,高可用,可管理性变大,高性价比,高透明性分析。