概览
AWS 上的虚拟等候室解决方案有助于在流量激增期间缓冲对您网站的传入用户请求。它创建了一个可暂时将传入流量卸载到您的网站的云基础设施,并且提供了自定义和集成虚拟等候室的选项。该等候室可作为网站访客的等候区,并在容量充足时允许流量通过。
可能导致网站流量激增的大型活动示例包括:
- 音乐会或体育赛事门票开售
- 大甩卖或其他大型零售活动,例如黑色星期五
- 进行了广泛营销宣传的新产品发布
- 在线测试和课程的考试访问和课堂出勤
- 发布预约就诊时段
- 推出新的直接面向客户的服务,需要创建帐户和付款
优势
用户在进入等候室时会被分配一个队列号。他们保持在队列中的位置,只有在轮到他们时才离开等候室进入目标站点。
该解决方案可以控制大型活动的流量。流量高峰不会使您的系统不堪重负;让您的网站保持正常运行,可供客户访问。
该解决方案可生成签名、限时的 JSON Web 令牌 (JWT),允许下游系统的 API 在处理任何请求之前验证用户是否已成功通过等候室。
该解决方案的 OpenID 适配器提供了一组与 OpenID Connect(OIDC)兼容的 API,可与支持 OIDC 身份提供商的现有 Web 托管软件结合使用。
该解决方案提供了一个示例等候室网站,以演示用于定制的最小的端到端等候室解决方案。
技术详情
您可以使用实施指南和随附的 AWS CloudFormation 模板自动部署该架构。
第 1 步
AWS CloudFormation 模板部署了一个 Amazon CloudFront 分发,用于为客户端提供公共 API 调用。
第 2 步
Amazon API Gateway 公共 API 资源,用于处理来自虚拟等候室的队列请求,跟踪队列位置,并支持允许访问目标网站的令牌验证。
第 3 步
一个 Amazon Simple Queue Service(Amazon SQS)队列,用于调节流向处理队列消息的 AWS Lambda 函数的流量。Amazon SQS 队列不会为每个请求调用 Lambda 函数,而是会批量处理激增的传入请求。
第 4 步
API Gateway 私有 API 资源,用于支持管理功能。
第 5 步
Lambda 函数,用于验证和处理公共和私有 API 请求并返回适当的响应。
第 6 步
Amazon Virtual Private Cloud(Amazon VPC),用于托管直接与 Amazon ElastiCache for Redis 集群交互的 Lambda 函数。 VPC 端点,允许 VPC 中的 Lambda 函数与解决方案中的服务进行通信。
第 7 步
用于调用 Lambda 函数的 Amazon CloudWatch 规则,该函数与自定义 Amazon EventBridge 总线配合使用以定期广播状态更新。
第 8 步
Amazon DynamoDB表用于存储令牌、队列位置和服务计数器数据。
第 9 步
AWS Secrets Manager,用于存储令牌操作和其他敏感数据的密钥。
第 10 步(可选)
由 Amazon Identity and Access Management(IAM)角色和 Lambda 函数组成的 Authorizer 组件,用于验证 API 调用的签名。只要您使用的是 API Gateway,Authorizer 就会保护您的 API。
第 11 步(可选)
Amazon Simple Notification Service(Amazon SNS)、CloudWatch 和 Lambda 函数,以支持两种入口策略。
第 12 步(可选)
带有 API Gateway 和 Lambda 函数的 OpenID 适配器组件,允许 OpenID 提供商对您网站的用户进行身份验证。带有 Amazon Simple Storage Service(Amazon S3)存储桶的 CloudFront 分发,用于此组件的等候室页面。
第 13 步(可选)
带有 S3 源存储桶的 CloudFront 分配,用于可选示例等候室 Web 应用程序。