框架概述 - AWS Prescriptive Guidance

框架概述

韧性分析框架的制定基于明确工作负载所需的韧性属性。所需属性是您希​​望系统具备的特性。韧性通常通过可用性来衡量,因此高可用性分布式系统具备五个特征:冗余、充足容量、及时输出、正确输出和故障隔离。下图显示了这些属性。

所需韧性属性的关系
  • 冗余:通过消除单点故障(SPOF)的冗余实现容错能力。冗余的范围可以从工作负载中的备用组件到整个应用程序堆栈的完整副本。考虑应用程序的冗余时,务必考虑所使用的基础设施、数据存储和依赖关系提供的冗余级别。例如,Amazon DynamoDB 和 Amazon Simple Storage Service(Amazon S3)通过跨区域中的多个可用区复制数据来提供冗余,而 AWS Lambda 在多个可用区的多个 Worker 节点上运行您的函数。对于您使用的每项服务,请考虑服务提供的内容以及您需要设计的内容。

  • 充足容量:您的工作负载需要足够的资源才能按预期运行。资源包括内存、CPU 周期、线程、存储、吞吐量、服务配额等。

  • 及时输出:当客户使用您的工作负载时,他们希望其能在合理的时间内执行预期的功能。除非该服务提供延迟的服务水平协议(SLA),否则客户期望通常基于经验证据,即自身的经验。这种平均客户体验通常被视为系统延迟的中值(P50)。如果您的工作负载所花时间超出预期,则此延迟可能会影响您的客户体验。

  • 正确输出:工作负载软件需要正确输出才能提供其预期功能。不正确或不完整的成果可能比完全无响应更糟糕。

  • 故障隔离:故障隔离将发生故障时的影响范围限制在预期的故障容器内。它确保工作负载的特定组件一起失效,同时防止故障级联到其他非预期组件。其还可帮助限制工作负载对客户的影响范围。故障隔离与前四个属性略有不同,因为它接受故障已经发生,但应控制其范围。您可以在基础设施、依赖关系和软件功能中实现故障隔离。

当违反所需属性时,可能会导致工作负载不可用或被视为不可用。根据这些所需韧性属性以及我们与许多 AWS 客户合作的经验,我们确定了五种常见的故障类别:单点故障、负载过高、延迟过长、配置错误和错误以及故障共担(缩写为 SEEMS)。这些类别为潜在故障模式的分类提供一种一致的方法,如下表中所述。

故障类别

违反

定义

单点故障(SPOF)

冗余

由于组件缺乏冗余,单个组件故障会导致系统中断。

负载过高

充足容量

由于需求或流量过大而过度消耗资源,使资源无法执行其预期功能。这可能包括达到限制和配额,导致节流和拒绝请求。

延迟过长

及时输出

系统处理或网络流量延迟超出预期时间、服务水平目标(SLO)或服务水平协议(SLA)。

配置错误和错误

正确的输出

软件错误或系统配置错误会导致输出不正确。

故障共担

故障隔离

任何上述故障类别引起的故障都会跨越预期的故障隔离边界,并级联到系统的其他部分或其他客户。