软件容错

2025年3月17日 | 阅读 3 分钟

软件容错是指软件能够检测并从发生在软件或硬件中的故障中恢复的能力,无论该故障正在发生还是已经发生,目的是通过规范提供服务。

软件容错是构建下一代高可用和可靠的计算系统的必要组成部分,这些系统涵盖了从嵌入式系统到数据仓库系统的各种应用。

为了充分理解软件容错,重要的是要理解软件容错试图解决的问题的本质。

软件故障都是设计故障。软件制造,即软件的复制,被认为是完美的。问题完全源于设计缺陷,这与其他需要容错特性的系统截然不同。

软件容错技术

Software Fault Tolerance

1. 恢复块

恢复块方法是由 Randel 开发的一种简单技术。 恢复块与裁判一起运行,裁判确认同一算法的各种实现的结果。 在具有恢复块的系统中,系统视图被分解为故障可恢复块。

整个系统由这些容错块构成。 每个块至少包含一个主代码、辅助代码和异常情况代码以及一个裁判。 裁判是确定尝试的各种块的正确性的组件。

应使裁判保持一定程度的简单性,以维持执行速度并协助确保正确性。 首次进入单元时,裁判首先执行主备选项。(一个单元中可能有 N 个裁判可以尝试的备选项。)如果裁判确定基本块失败,则尝试回滚系统状态并尝试辅助备选项。

如果裁判不接受任何备选项的结果,则调用异常处理程序,该处理程序随后指示软件无法执行所请求的操作这一事实。

恢复块技术增加了对规范的要求,使其必须足够具体,才能创建功能相同的各种替代方案。 在 N 版本软件方法的上下文中进一步讨论了这个问题。

2. N 版本软件

N 版本软件方法试图并行传统的 N 路冗余硬件的硬件容错概念。 在 N 版本软件系统中,每个模块都使用最多 N 种不同的方法来完成。 每个变体都完成相同的功能,但希望以各种方式完成。 然后,每个版本将其答案提交给投票器或决策器,该投票器或决策器决定正确的答案,并将其作为模块的结果返回。

通过依赖于设计多样性概念,该系统有望克服大多数软件中存在的设计缺陷。 N 版本软件的一个重要区别是,系统可以包括使用多个软件版本的多种类型的硬件。

只有满足所需的设计多样性,N 版本软件才能成功并成功容错。 必须充分强调在 N 版本软件(和恢复块)中对适当规范的依赖。

3. N 版本软件和恢复块

恢复块技术N 版本技术之间的差异不是很多,但它们至关重要。 在传统的恢复块中,将串行执行每个备选项,直到找到裁判确定的可接受的解决方案。 恢复块方法已扩展为包含各种备选项的并发执行。

N 版本技术始终被设计为使用 N 路硬件并发实现。 在串行重试系统中,尝试多种方法的时间成本可能太高,尤其是对于实时系统。 相反,并发系统需要 N 路硬件和用于连接它们的通信网络的开销。

恢复块技术要求每个模块构建特定的裁判; 在 N 版本方法中,可以使用单个决策器。 恢复块技术,假设程序员可以创建一个足够简单的裁判,将创建一个系统,该系统很难进入不正确的状态。