逻辑级的故障模型,数据结构级的故障,软件故障和软件差错,系统级的故障
(1)降低复杂度设计
保证实现软件功能的基础上,简化软件结构
(2)冗余设计
(3)日志定期定量清理
(4)备份恢复设计
(5)日志云端保存
(6)监控报警
采用“查出故障,停止软件运行,报警”的实现方式,根据故障的不同情况,采用不停止或部分停止软件系统运行。
检错技术实现的代价低于容错技术,但缺点是不能自动解决故障,需要人工干预。一般公司都会把差错和容错一起进行。
判断返回结果;计算运行时间;自检法(置状态标志位)
(1)仅发送日志
(2)发送日志和告警,停止运行,需人工干预
(3)发送日志和告警,自动恢复到某一状态,继续运行,不需人工干预
处理故障的步骤:故障检测,故障屏蔽,故障限制,复执,故障诊断,系统重配置,系统恢复,系统重新启动,修复,系统重组合
前向恢复:使当前的计算继续下去,把系统恢复成连贯的继续状态,弥补当前状态的不连贯情况。将对一些变量的状态进行修改和处理,且这个恢复过程将由程序设计者设计,适用于可预见的易定义的错误。
后向恢复:系统恢复到前一个正确状态,继续执行。简单的把变量恢复到检查点的取值,适用于可屏蔽的不可预见的错误。
1.结构冗余
(1)静态冗余
N版本程序设计 - 通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果进行多数表决。
其中N版本的程序由不同的人独立设计,使用不同的方法,设计语言,开发环境和工具来实现。
(2)动态冗余 (主动冗余)
恢复快设计方法 - 选择一组操作作为容错设计单元,从而把普通的程序块变为恢复块。一个恢复块包含若干功能相同,设计差异的程序块,每一时刻有一个程序块处于运行状态,一旦某程序块出现故障,则用备份程序块予以替换。
设计时应保证主备间的独立性,避免相关错误的产生,使主备间的共性错误降到最低
按照备用模块在待机时是否与主模块一起工作分为热备份系统(双重系统),冷备份系统(双工系统,双份系统)。
2.冗余设计
采用多种不同路径,不同算法,不同实现方法的模块或系统作为备份,在出现故障时进行替换,维持系统的正常运行。
3.防卫式程序设计
通过程序中包含错误检查代码和错误恢复代码,使得一旦错误发生,程序能撤销错误状态,恢复到一个已知的正确状态中去。
4. 双机容错
双机热备模式:主系统,备系统
双机互备模式:同时提供不同的服务,主故障,则接管
双机双工模式:同时提供相同的服务,集群的一种
5. 信息冗余 (校验码)
6. 时间冗余 (重复多次相同的计算)
原文:https://www.cnblogs.com/leslie12956/p/11522240.html