三个容易混淆的概念:容错、高可用和灾备

说实话,这三个概念,恐怕大部分人都搞不太清楚差异,也包括自己。今天读了阮一峰的文章,清楚了许多。下面是从阮大侠的笔记中摘抄的一些内容。

首先,三者的英文名称如下:

  • 容错:Fault Tolerance
  • 高可用:High Availability
  • 灾备:Disaster Recovery

容错

容错,当系统发生故障时,系统的业务水平可能下降,但仍然坚持运行,不会完全失败(注意,不完全失败就不算业务中断,这是两个概念)。飞机有四个引擎,一个引擎坏了,剩下三个引擎还能继续飞,这就是"容错"。

容错

高可用

高可用,目的是为了让系统比正常时间能更长久的保持一定的运行水平。高可用不是指系统业务不中断(那是容错能力),而是指一旦中断能够快速恢复,如果需要很长时间才能恢复可用性,就不叫高可用了。汽车的备胎就是一个高可用的例子。如果没有备胎,轮胎坏了,车就开不久了。备胎延长了汽车行驶的可用时间。

高可用

容灾

容灾,系统发生灾难是恢复业务的能力。灾备的目的是保存系统的核心部分。一个好的灾备方案,就是从失败的基础设施中获取企业最宝贵的数据,然后在新的基础设施上恢复它们。注意,灾备不是为了挽救基础设置,而是为了挽救数据和业务。如下图所示,飞机是基础设施,飞行员是业务,而飞行员弹射装置就是灾备措施。一旦飞机即将坠毁,代表基础设施就要没了,但灾备可以让业务幸存下来。

容灾

总结

其实,对字面意义抠来抠去并没有意义。我们在搭建系统时,最重要的就是考虑业务在各种异常或故障中能否保持连续性。异常或故障的程度是可变的,应对措施也是多样的:一条判空语句、一段 FMEA 代码,Master/Slave,M+N,同城灾备,两地三中心……这些都是系统设计中应该考虑的东西。

如果一定要对这三个名词做个关联,“容错和容灾一起构成了高可用”,我想这句话是比较合适的。

你可能感兴趣的:(三个容易混淆的概念:容错、高可用和灾备)