一家公司在 Application Load Balancer 后面的 Amazon EC2 实例上运行电子商务应用程序。这些实例在跨多个可用区的 Amazon EC2 Auto Scaling 组中运行。成功处理订单后,应用程序立即将订单数据发布到第三方关联应用程序的外部跟踪系统,该系统为订单推荐支付销售佣金。 在成功的营销推广期间,EC2 实例的数量从 2 个增加到 20 个。在此期间,应用程序继续正常工作。但是,请求率的提高使第三方关联应用程序不堪重负,导致请求失败。
解决方案架构师应进行哪种架构更改组合,才能确保整个流程在负载状态下正常运行? (请选择两项)
A. 将调用关联应用程序的代码移至新的 AWS Lambda 函数。修改应用程序以异步调用 Lambda 函数。
B. 将调用关联应用程序的代码移至新的 AWS Lambda 函数。修改应用程序以将订单数据放入 Amazon Simple Queue Service (Amazon SQS) 队列中。从队列中调用 Lambda 函数。
C. 增加新 AWS Lambda 函数的超时时间。
D. 减少新 AWS Lambda 函数的预留并发数。
E. 增加新 AWS Lambda 函数的内存。
B、D
A. 不正确。该方案将降低 Amazon EC2 实例的负载,但此解决方案不会减少对关联应用程序的请求数量。
B. 正确。使用 Amazon Simple Queue Service (Amazon SQS) 队列将使主应用程序与对关联应用程序的调用分离。此更改将保护主应用程序免受关联应用程序容量减少的影响。此外,失败的请求可以自动返回队列。
C. 不正确。该方案允许 AWS Lambda 函数等待更长时间以便让外部调用返回,但此解决方案不会减少不堪重负的关联应用程序的负载
D. 正确。减少并发调用次数将防止关联应用程序不堪重负。
E. 不正确。内存的增加不会影响 Lambda 函数和关联跟踪系统之间的交互。