系统容错是系统可靠性设计的重要组成部分。
而容错的主要手段是冗余。所谓冗余,就是多个朋友多条路,多个选择,有备无患,双保险之类的意思。
冗余技术主要分为四类:
结构冗余、信息冗余、时间冗余、冗余附加技术。
1、结构冗余
最常用的冗余技术。按工作方式又可以分为
1)静态冗余
通过表决和比较来屏蔽系统中出现的错误。
所谓表决,就是N版本程序,相同的输入,然后考察大家的计算结果,少数服从多数,选一个正确概率最大的结果。
所谓比较,就是一致性检查,将计算结果与预测值比较,据此判断软硬件故障。
2)动态冗余
多重模块待机储备,相继运行,以维持系统的正常工作。经典的例子是冷(脱机备份)、热备(联机备份)。
3)混合冗余
动静结合
2、信息冗余
在实现正常功能所需的信息之外再添加一些信息,用来检测或纠正信息处理和传输过程中产生的错误,如纠错码,比如海明码,CRC校验码之类
3、时间冗余
重复执行同一条指令或程序来发现和纠正差错,如指令复执、程序卷回。
4、冗余附加技术
冗余备份程序的存储及调用,实现错误检测和错误恢复的程序,实现容错软件所需的固化程序。(也就是冗余的支撑技术吧)
软件冗余和硬件冗余
以上是冗余技术的分类。如果从执行介质看,又可以分为硬件冗余和软件冗余。软件冗余的思想是从硬件冗余中引申而来,利用软件设计的冗余和多样化来达到屏蔽错误的影响,提高系统可靠性的目的。
我看,上述4种冗余技术中,每一种都既可以用硬件来实现,也可以用软件来实现。
相关文章:
架构师学习笔记17–系统的可靠性分析与设计
冗余技术