某公司為一檔每周直播的電視節目運行在線投票系統。在廣播期間,用戶可以在幾分鐘內向在 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 隊列進行讀取的專用工作線程,以允許以可控的速率將投票輸入到數據庫中。投票將以數據庫處理它們的速度添加到數據庫中,但不會丟失任何投票。