考题解析 | Amazon SQS 解耦功能应用场景


  题目

某公司为一档每周直播的电视节目运行在线投票系统。在广播期间,用户可以在几分钟内向在 Auto Scaling 组中运行的 Amazon EC2 实例的前端队列提交数十万张投票。EC2 实例将投票写入 Amazon RDS 数据库。但是,数据库的处理速度跟不上来自 EC2 实例的请求数。解决方案架构师设计的解决方案必须能够以最高效的方式处理投票而不需要停机。
哪种解决方案满足这些要求?

A) 将前端应用程序迁移到 AWS Lambda。使用 Amazon API Gateway 将用户请求路由到 Lambda 函数。
B) 通过将数据库转换为多可用区部署来横向扩展数据库。将前端应用程序配置为同时写入主数据库实例和备用数据库实例。
C) 将前端应用程序配置为向 Amazon Simple Queue Service (Amazon SQS) 队列发送投票。预置工作线程实例以读取 SQS 队列并将投票信息写入数据库。
D) 使用 Amazon EventBridge (Amazon CloudWatch Events) 创建计划的事件,以便在投票期间使用更大的内存优化型实例重新预置数据库。投票结束后,重新预置数据库以使用较小的实例。

  参考答案

C

  参考解析

Amazon SQS (Simple Queue Service)提供了一种简单而可靠的方法,可以方便地使用队列同时解耦和连接组件。使用 SQS 可以将前端与后端系统分离,例如在银行应用程序中。客户可立即得到响应,而账单支付则在后台进行处理。

本案例中,可以将投票的摄取与数据库分离,以允许投票系统在不等待数据库写入的情况下继续处理投票。添加从 SQS 队列进行读取的专用工作线程,以允许以可控的速率将投票输入到数据库中。投票将以数据库处理它们的速度添加到数据库中,但不会丢失任何投票。

  官方参考文档

Amazon SQS
SQS 队列