Q48 — AWS SAA-C03 第14章
第 48/100 题 | ← 返回第14章
Q1048.一家公司经营食品配送服务.由于近期业务增长,该公司的订单处理系统在高峰流量时段遇到了扩展问题.当前架构包括 Auto Scaling 组中的 Amazon EC2 实例,用于从应用程序收集订单.Auto Scaling 组中的第二组 EC2 实例用于执行订单.订单收集过程很快,但订单履行过程可能需要更长时间.数据不能因为扩展事件而丢失.解决方案架构师必须确保订单收集流程和订单履行流程在高峰时段都能够充分扩展.哪种解决方案可以满足这些要求?
- A. 使用 Amazon CloudWatch 监控两个 Auto Scaling 组中每个实例的 CPUUtilization 指标.配置每个 Auto Scaling 组的最小容量以满足其峰值工作负载值.
- B. 使用 Amazon CloudWatch 监控两个 Auto Scaling 组中每个实例的 CPUUtilization 指标.配置 CloudWatch 警报以调用 Amazon Simple Notification Service (Amazon SNS) 主题,以根据需要创建其他 Auto Scaling 组.
- C. 配置两个 Amazon Simple Queue Service (Amazon SQS) 队列.使用一个 SQS 队列进行订单收集.使用第二个 SQS 队列进行订单履行.配置 EC2 实例以轮询其各自的队列.根据队列发送的通知扩展 Auto Scaling 组.
- D. 预置两个 Amazon Simple Queue Service (Amazon SQS) 队列.使用一个 SQS 队列进行订单收集.使用第二个 SQS 队列进行订单履行.配置 EC2 实例以轮询其各自的队列.根据每个队列中的消息数量扩展 Auto Scaling 组. ✓
正确答案: D. 预置两个 Amazon Simple Queue Service (Amazon SQS) 队列.使用一个 SQS 队列进行订单收集.使用第二个 SQS 队列进行订单履行.配置 EC2 实例以轮询其各自的队列.根据每个队列中的消息数量扩展 Auto Scaling 组.
解析
为了确保订单收集和订单履行流程在高峰时段能够充分扩展,同时防止数据丢失,最好的解决方案是:D. 预置两个 Amazon Simple Queue Service (Amazon SQS) 队列.使用一个 SQS 队列进行订单收集.使用第二个 SQS 队列进行订单履行.配置 EC2 实例以轮询各自的队列.根据每个队列中的消息数量扩展 Auto Scaling 组.### 解释:\ 1. 与SQS解耦:- 使用 SQS 可以将订单收集和订单执行流程分离.这意味着订单收集无需等待执行流程即可进行,从而提高整体系统响应能力.\ 2. 可扩展性:- 通过拥有单独的 SQS 队列,您可以根据履行队列中的消息数量独立扩展订单履行 EC2 实例的 Auto Scaling 组.这使您能够高效地处理订单高峰.\ 3. 防止数据丢失:- SQS 确保消息(订单)保留在队列中,直到成功处理,这有助于防止在扩展事件或处理延迟期间丢失数据.\ 4. 轮询机制:- EC2 实例可以轮询 SQS 队列以检索可用的消息.这种动态处理模型可以根据当前需求高效利用资源.其他选项的评估:A. 使用 Amazon CloudWatch 监控两个 Auto Scaling 组中每个实例的 CPUUtilization 指标:- 虽然监控 CPU 利用率很重要,但仅仅配置最小容量并不能满足基于工作负载的动态扩展需求.它也没有提供有效处理消息的机制.B. 使用 Amazon CloudWatch 监控两个 Auto Scaling 组中每个实例的 CPUUtilization 指标:- 此选项建议使用 CloudWatch 警报调用 SNS 主题来按需创建额外的 Auto Scaling 组,这过于复杂并且不能直接满足基于队列的处理需求.C. 配置两个 Amazon SQS 队列:- 虽然此选项建议使用 SQS 进行解耦,但它没有提到根据队列中的消息数量扩展 Auto Scaling 组.如果没有这种扩展机制,您仍然可能在高峰时段遇到瓶颈.### 结论:选项 D 提供了一个强大、可扩展且具有容错能力的架构,可以有效地处理订单收集和履行流程,同时确保高峰时段的数据完整性和响应能力.