【问题标题】:High Availability(HA) vs Fault Tolerance高可用性(HA)与容错
【发布时间】:2017-06-16 11:48:18
【问题描述】:
在 Google 上阅读了几篇文章,例如 this,但仍然不清楚它们之间有什么区别?
两者的目的似乎是在一个组件(无论是硬件还是软件)发生故障时提供服务,备份/辅助组件会立即接管操作,以免服务中断。
我的理解:
根据我的理解,不同之处在于容错系统中的内存数据不会丢失任何数据,而 HA 则不会。例如:如果我们有一个具有粘性会话但没有会话复制的 Web 服务器集群,那么它是一个 HA 系统,但不是一个容错系统。原因是当一个节点发生故障时,内存数据会丢失,但是如果我们有会话复制和粘贴会话,那么它可以称为容错系统。对吗?
【问题讨论】:
标签:
high-availability
fault-tolerance
【解决方案1】:
最大的不同是您的企业可以承受的停机时间。你可以看看这个youtube video,里面有详细的解释。
- 如果您说您的企业不能承受停机时间,那么它的容错能力。因此,为此,您应该运行并同步一台并行机器。所以这个ADDS COST,但如果有问题你可以直接切换。
- 现在让您的企业能够承受短暂的停机时间,然后再实现高可用性。在这里我们不产生费用,但您有停机时间。
请查看顶部给出的 youtube 视频链接,也可以查看下图。
此外,添加灾难恢复是另一件可能会增加混乱的事情。灾难恢复不是关于一台 VM 或某台机器,而是它的整个区域。因此,就像该地区发生洪水或地震一样,您不仅需要升级机器,还需要动员人员、升级基础设施等等。
【解决方案2】:
在您所说的示例中 - 具有粘性会话和非复制会话的 Web 服务器集群将继续为下一个请求提供服务(显然,面临问题的请求将被终止或将向用户提供错误)。这是高可用性。然而,即使有复制的会话 - 一个真正的容错系统将能够继续向用户提供可接受的响应,尽管当前请求通过某种自动更正数据状态的方式失败。通常在 Web 服务器中,这种容错性不是天生内置的,而是可能由捕获任何类型的异常(在发送输出之前)的层构建,更正被复制的内存数据,调用另一个能够得到正确的回应。关键是它应该是全部自动,并且在系统自动更正时,一定程度的性能降级是可以预期和可以接受的。因此,HA 系统并不仅仅承担维护正确数据的负担,因为它可以为下一个请求提供服务,但是真正的容错系统涉及维护一致的数据。