cmu440(10) Fault Tolerance, Logging and recovery

真实系统(通常不可靠)

  1. 我们迄今为止忽略了失败
  2. 容错的基本概念
    https://en.wikipedia.org/wiki/Algorithms_for_Recovery_and_Isolation_Exploiting_Semantics
    https://en.wikipedia.org/wiki/Write-ahead_logging
    https://en.wikipedia.org/wiki/Shadow_paging

什么是容错?

  1. 成功处理分布式系统中的部分故障
  2. 容错〜>可靠的系统
  3. 可靠性意味着以下几点:
    Availability
    Reliability
    Safety
    Maintainability(可维护性)
    问题:什么是部分失败? DS中的某些节点出现故障/无响应 - 但它们都是共享状态的一部分。

可靠性概念(dependable)

  1. Availability - 系统已准备好立即使用。
  2. Reliability - 系统连续运行而不失败。
  3. Safety - 如果系统发生故障,则不会发生灾难性事件。 (例如进程控制系统)
  4. Maintainability - 当系统发生故障时,可以方便快捷地进行维修(有时,用户不会注意到故障)。 (也称为恢复)
    • 什么是失败? :无法实现其目标的系统=>故障
    • 故障可以是:暂时的,间歇的,永久的

区分可用性和可靠性:
系统每小时降低1ms可用率为99.9999%(6个9),但这不可靠。
系统从不崩溃或宕机,但每8月关闭2周,可用性为96%,但其超级可靠。

  • 可用性是针对任何时刻,任何时刻,系统会根据用户的行为作出正确的操作。
  • 可靠性针对某个时间间隔,在一个相对较长的时间内持续工作而不被打断。

故障(fault)

失败(fail)当一个系统不能兑现它的承诺。比如一个分布式系统提供大量的服务,而当这些服务中的一个或者多个不能被(完整地)提供时,系统就失败了。
错误(error)是系统状态的一部分,有可能会导致失败。
而造成错误的原因叫故障(fault)

可维护性能够从错误中恢复的过程 是DS的关键部分。

类型

瞬间故障 - 出现一次,然后消失。
间歇性故障 - 发生,消失,再现; 但是:不遵循真正的模式(最坏的一种)。
永久性故障 - 一旦发生,只需更换/修理故障组件

故障模式

Failure Models

deviate:偏离

通过冗余(Redundancy)掩盖故障

  • 策略:使用冗余隐藏其他进程发生的故障。
  1. 信息冗余 - 信息冗余 - 增加额外的位以允许错误检测/恢复(例如,汉明码等)。
  2. 时间冗余 - 执行操作,如果需要,再次执行。 考虑事务如何工作(BEGIN / END / COMMIT / ABORT)。
  3. 物理冗余 - 为系统添加额外的(重复)硬件和/或软件。
    物理冗余:人类有2只肺,2只肾,2只耳,2只眼
Triple modular redundancy in a circuit (b) A,B,C are circuit elements and V* are voters

上面是一个在电子电路的容错,来介绍下物理冗余。
这里的信号依次通过设备A、B、C。如果它们中的一个发生故障,最后结果有可能是错误的。
如果输入中的两个或者三个是相同的,那么输出等于输入,如果所有的输入都是不同的,那么输入就是未定义的。(三倍模块冗余)

为什么不选择单选民?
万一仅有的那个选民发生故障。

你可能感兴趣的:(cmu440(10) Fault Tolerance, Logging and recovery)