SAA-C03 · LESSON 2

设计弹性架构26% · 2 个主题

学习如何设计可扩展、松耦合的架构,以及高可用、容错的架构。

2.1设计可扩展、松耦合的架构

2.1 Design scalable and loosely coupled architectures.

概念

松耦合是在组件之间放置 SQS(队列)、SNS(通知)或 EventBridge(事件),使一方的延迟或故障不会波及另一方。让处理无状态,把会话放在 ElastiCache 或 DynamoDB 中,用 Auto Scaling 水平扩展。无服务器(Lambda、API Gateway、Step Functions)和容器(ECS、EKS、Fargate)也是可选方案。

原理、步骤

  1. 必要时把同步调用改为经过 SQS 的异步处理
  2. 把一个事件分发给多个处理时,从 SNS 发往多个 SQS(扇出)
  3. 让应用无状态,把会话放在外部
  4. 以 SQS 队列长度等为指标进行 Auto Scaling
  5. 用 Step Functions 控制多个步骤,并定义失败时的重试

工作中的示例

订单发布到 SNS,扇出到库存、计费、通知各自的 SQS,各处理独立扩展。即使计费处理停止,订单也会留在队列中。

易混淆点、考试注意事项

小测验

Q1. 希望用 Auto Scaling 水平扩展 EC2 上的 Web 应用。登录状态保存在服务器内存中,服务器数量变化时用户会被登出。最合适的对策是哪一项?

  1. 把会话信息保存在 ElastiCache 或 DynamoDB 中,使服务器无状态
  2. 请用户修改浏览器设置,不保存登录状态
  3. 禁用 ALB 运行状况检查,固定服务器使 Auto Scaling 不替换它们
  4. 停用 Auto Scaling,用一台最大的实例运行
查看答案和解析

正确答案:A 把会话信息保存在 ElastiCache 或 DynamoDB 中,使服务器无状态

把会话放在外部数据存储中,任何服务器都能处理同一会话,从而可以自由增减服务器。粘性会话只是临时的变通办法。

Q2. 希望根据 SQS 队列中积压的消息数,增减 ECS 上容器化订单应用的任务数。最合适的方法是哪一项?

  1. 以 CPU 利用率为目标做目标跟踪来增减 ECS 任务
  2. 用 ECS 容量提供程序只增减 EC2 实例数
  3. 基于队列消息数配置 ECS 服务 Auto Scaling
  4. 用 EventBridge 计划仅在工作日白天增加任务
查看答案和解析

正确答案:C 基于队列消息数配置 ECS 服务 Auto Scaling

ECS 服务 Auto Scaling 可以根据 CloudWatch 指标(如队列深度)增减任务数。【其他选项】CPU 不一定反映队列积压。计划无法跟随实际流量。容量提供程序调整底层实例,不增加任务数。

参考链接

2.2设计高可用、容错的架构

2.2 Design highly available and/or fault-tolerant architectures.

概念

高可用的基础是分散到多个可用区(ALB+Auto Scaling 组、RDS 多可用区)。针对区域级灾难(灾难恢复),按成本和 RTO、RPO 有四种策略:备份与还原 → 指示灯 → 温备用 → 多站点(双活)。用 Route 53 运行状况检查和故障转移路由进行切换。

原理、步骤

  1. 确定 RTO(恢复所需时间)和 RPO(可丢失数据的时间范围)
  2. Web 和应用层由跨多个可用区的 Auto Scaling 组和 ALB 构成
  3. 数据库使用 RDS 多可用区(同步复制、自动故障转移)
  4. 根据 RTO、RPO 和成本选择灾难恢复策略,复制到其他区域
  5. 用 Route 53 故障转移切换到灾难恢复区域,并定期演练

工作中的示例

针对 RTO 1 小时、RPO 15 分钟的要求,采用在其他区域始终运行缩小版环境的温备用和 Aurora 全局数据库。

易混淆点、考试注意事项

小测验

Q1. 为提高 Web 应用的可用性,希望消除单点故障。最合适的架构是哪一项?

  1. 把所有处理集中到一台高性能实例上
  2. 把 ALB 和 Auto Scaling 组部署在多个可用区,数据库采用多可用区
  3. 把两台 EC2 放在同一可用区,其中一台保持停止
  4. 把数据库放在一台 EC2 的实例存储中,每天下班后手动复制到另一台服务器
查看答案和解析

正确答案:B 把 ALB 和 Auto Scaling 组部署在多个可用区,数据库采用多可用区

分散到多个可用区,并使用负载均衡器、自动扩展和多可用区数据库,任何一处故障时服务都能继续。

Q2. 关于 RPO 和 RTO,正确的说明是哪一项?

  1. RPO 是可接受的数据丢失时间范围,RTO 是从停机到恢复可接受的时间
  2. RPO 是恢复所需时间,RTO 是可保存的数据量
  3. RPO 是使用的区域数量,RTO 是使用的可用区数量
  4. RPO 和 RTO 意思相同,都表示费用上限
查看答案和解析

正确答案:A RPO 是可接受的数据丢失时间范围,RTO 是从停机到恢复可接受的时间

RPO(恢复点目标)是最多可以丢失多久之前的数据,RTO(恢复时间目标)是必须在多长时间内恢复。据此选择灾难恢复方式。

参考链接

课程由本站根据公开信息独立编写,不保证与考试内容一致。产品规格可能变化,请在参考链接中确认最新信息。

使用须知(非官方、原创题目、不保证合格)