框架概述 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

框架概述

弹性分析框架是通过确定工作负载所需的弹性特性而开发的。所需的属性是你想要对系统保持真实的东西。弹性通常通过可用性来衡量,因此高可用性分布式系统的五个特征是:冗余、足够的容量、及时的输出、正确的输出和故障隔离。这些属性如下图所示。

所需弹性特性的关系
  • 冗余— 容错是通过消除单点故障 (SPOF) 的冗余实现的。冗余可以从工作负载中的备用组件到整个应用程序堆栈的完整副本。在考虑应用程序的冗余时,重要的是要考虑所使用的基础架构、数据存储和依赖项提供的冗余级别。例如,Amazon DynamoDB 和亚马逊简单存储服务 (Amazon S3) 通过跨区域的多个可用区复制数据来提供冗余,以及AWS Lambda在多个可用区的多个工作节点上运行您的函数。对于您使用的每项服务,请考虑该服务提供的内容以及您需要设计的内容。

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

  • 及时输出— 当客户使用您的工作负载时,他们希望它能在合理的时间内执行其预期功能。除非服务提供延迟服务级别协议 (SLA),否则他们的期望通常基于经验证据,即他们自己的经验。这个客户体验一般通常被视为系统中延迟的中位数 (P50)。如果您的工作负载花费的时间超过预期,则这种延迟可能会影响您的客户体验。

  • 正确输出— 需要工作负载软件的正确输出才能提供预期功能。不正确或不完整的结果可能比根本没有回应更糟糕。

  • 故障隔离— 故障隔离将故障发生时的影响范围限制在预期的故障容器内。它可以确保工作负载的特定组件一起出现故障,同时防止故障级联到其他意想不到的组件。它还有助于限制您的工作负载对客户的影响范围。故障隔离与前四个属性略有不同,因为它接受已经发生故障,但应加以控制。您可以在基础架构、依赖项和软件功能中创建故障隔离。

当违反所需属性时,可能会导致工作负载不可用或被认为不可用。基于这些所需的弹性特性以及我们与许多人合作的经验AWS客户,我们已经确定了五种常见的故障类别:单点故障、负载过大、延迟过长、配置错误和错误以及共同命运,我们将其缩写为 SEES。它们为对潜在的失效模式进行分类提供了一种一致的方法,下表对此进行了介绍。

失败类别

违反

定义

单点故障 (SPOF)

冗余

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

负荷过大

足够的容量

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

延迟过长

及时输出

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

配置错误和错误

正确输出

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

共同的命运

故障隔离

由先前的任何故障类别引起的故障跨越了预期的故障隔离界限,并级联到系统的其他部分或其他客户。