真实系统(通常不可靠)
- 我们迄今为止忽略了失败
- 容错的基本概念
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
什么是容错?
- 成功处理分布式系统中的部分故障
- 容错〜>可靠的系统
- 可靠性意味着以下几点:
Availability
Reliability
Safety
Maintainability(可维护性)
问题:什么是部分失败? DS中的某些节点出现故障/无响应 - 但它们都是共享状态的一部分。
可靠性概念(dependable)
- Availability - 系统已准备好立即使用。
- Reliability - 系统连续运行而不失败。
- Safety - 如果系统发生故障,则不会发生灾难性事件。 (例如进程控制系统)
-
Maintainability - 当系统发生故障时,可以方便快捷地进行维修(有时,用户不会注意到故障)。 (也称为恢复)
- 什么是失败? :无法实现其目标的系统=>故障
- 故障可以是:暂时的,间歇的,永久的
区分可用性和可靠性:
系统每小时降低1ms可用率为99.9999%(6个9),但这不可靠。
系统从不崩溃或宕机,但每8月关闭2周,可用性为96%,但其超级可靠。
- 可用性是针对任何时刻,任何时刻,系统会根据用户的行为作出正确的操作。
- 可靠性针对某个时间间隔,在一个相对较长的时间内持续工作而不被打断。
故障(fault)
失败(fail)当一个系统不能兑现它的承诺。比如一个分布式系统提供大量的服务,而当这些服务中的一个或者多个不能被(完整地)提供时,系统就失败了。
而错误(error)是系统状态的一部分,有可能会导致失败。
而造成错误的原因叫故障(fault)
可维护性 或 能够从错误中恢复的过程 是DS的关键部分。
类型
瞬间故障 - 出现一次,然后消失。
间歇性故障 - 发生,消失,再现; 但是:不遵循真正的模式(最坏的一种)。
永久性故障 - 一旦发生,只需更换/修理故障组件
故障模式
Failure Modelsdeviate:偏离
通过冗余(Redundancy)掩盖故障
- 策略:使用冗余隐藏其他进程发生的故障。
- 信息冗余 - 信息冗余 - 增加额外的位以允许错误检测/恢复(例如,汉明码等)。
- 时间冗余 - 执行操作,如果需要,再次执行。 考虑事务如何工作(BEGIN / END / COMMIT / ABORT)。
- 物理冗余 - 为系统添加额外的(重复)硬件和/或软件。
物理冗余:人类有2只肺,2只肾,2只耳,2只眼
上面是一个在电子电路的容错,来介绍下物理冗余。
这里的信号依次通过设备A、B、C。如果它们中的一个发生故障,最后结果有可能是错误的。
如果输入中的两个或者三个是相同的,那么输出等于输入,如果所有的输入都是不同的,那么输入就是未定义的。(三倍模块冗余)
为什么不选择单选民?
万一仅有的那个选民发生故障。
网友评论