关于容错,您需要了解的五个事实

到目前为止,您可能至少听说过“容错”一词。 对于那些不熟悉其含义的人来说,它是指计算机系统在硬件或软件发生故障时继续运行的能力。

从本质上讲,系统“容忍”了会导致其他系统崩溃的故障。 听起来很简单……对吧?

不完全是。
容错实际上比表面上看起来要多得多——而且它比人们乍一看可能预期的要重要得多。 让我们谈谈那个。 我们将讨论一些您需要了解的关于容错的事实。

容错和高可用性不是一回事
容错系统不一定与高可用性系统相同——尽管两者绝对是密切相关的。使系统组件更具弹性的过程当然是可用性的要素,但不仅如此。消除故障点只是第一步。

高可用性网络不能只是容错——它还需要能够以极快的速度从故障中恢复。补丁、数据迁移和应用程序更新需要实时执行,并且不会显着影响性能。简而言之,无论您需要运行哪种软件,它都需要能够继续运行。

建立一个真正的容错系统是相当昂贵的
添加额外的组件具有推高系统价格的令人讨厌的趋势——更不用说与设计软件解决方案相关的成本了,该解决方案旨在保持当今网络和平台中经常复杂的工作部分正常运行。总而言之,所有这些都意味着一件事:一笔巨额的资本投资。

值得庆幸的是,除非您自己构建所有基础设施,否则您的主机通常会在这里处理繁重的工作。

它比您预期的要复杂得多——尤其是在软件方面
如今,设计一个完全容错的系统不仅仅是确保它是冗余的问题。正如 Netflix 工程师 Ben Christensen 在服务官方博客上的文章所证明的那样,随着系统变得越来越复杂,保持系统可用和容错的难度呈指数级增长。因此,如果您正在运行多平台服务(或只是在大型网络上运行),那么确保一切都是冗余和可用的很有可能会变成一场绝对的噩梦。

容错并不意味着你不会失去性能
许多用户对容错系统的误解是,如果发生故障,他们绝对会没事的——一切都会继续正常运行。这根本不是真的。当一个组件发生故障时,容错系统当然能够继续运行,但也很有可能性能会开始下降,直到更换损坏的组件。

没有容错,其他一切都会崩溃
最后但同样重要的是……容错系统是必不可少的。不相信我?看看几年前 Netflix 经历的停电事件——以及它对公司及其客户的破坏程度。

几年前,Netflix 遭遇了有史以来最严重的中断之一。罪魁祸首是 Amazon Web Services Elastic Load Balancer——一个维护过程无意中删除了重要数据,最终导致整个平台陷入瘫痪;这反过来又导致全球客户大量损失服务。尽管 Netflix 被设计为具有容错性,但它并不是为了应对这种灾难性的故障而设计的。

结果,它的订户在平安夜(通常是该平台一年中最繁忙的时间之一)无法使用该服务。

“Netflix API 与我们面向服务的架构中的数十个系统进行交互,这使得它本质上更容易受到任何系统故障或堆栈延迟的影响,”Christensen 解释说。它本身具有出色的可用性和正常运行时间。”

“如果不采取措施确保容错,30 个依赖项每个具有 99.99% 的正常运行时间将导致每月停机 2 小时以上,”他继续说道。

简而言之,如果您正在运行任何类型的在线平台或服务,则容错需要成为您计划的一个要素——否则,您一定会失败。