本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设计注意事项
部署选项
如果这是第一次安装,或者您不确定要安装什么,请部署virtual-waiting-room-on-aws-getting-started.template
嵌套 CloudFormation模板,该模板将安装核心、授权者和等候室示例模板。这为您提供了一个最小的等候室,流程简单。
受支持的协议
AWS 解决方案上的虚拟等候室可以与以下内容集成:
-
JSONWeb 令牌验证库和工具
-
现有API网关部署
-
RESTAPI客户
-
OpenID 客户和提供商
等候室入口策略
入口策略封装了将客户从等候室转移到网站所需的逻辑和数据。入口策略可以作为 Lambda 函数、容器、Amazon EC2 实例或任何其他计算资源来实现。只要它可以将等候室称为公用和私有即可,它就不必是云资源APIs。入口策略接收有关等候室、网站或其他外部指标的事件,以帮助其决定何时可以发行代币并进入网站。入口策略有几种方法。你采用哪一种取决于你可用的资源以及受保护的网站设计的限制。
入口策略采取的主要操作是将 increment_serving_num
Amazon API Gateway 设为私API有,其相对值表示还有多少客户可以进入该网站。本节介绍两种样本入口策略。它们可以按原样使用,也可以自定义,也可以采用完全不同的方法。
MaxSize
使用该 MaxSize 策略,将 MaxSizeInlet
Lambda 函数配置为可以同时使用网站的最大客户数。这是一个固定值。客户发出 Amazon SNS 通知,该通知调用 Lamb MaxSizeInlet
da 函数以根据消息有效负载增加服务计数器。SNS消息的来源可以来自任何地方,包括网站上的代码或观察网站利用率的监控工具。
MaxSizeInlet
Lambda 函数预计会收到一条消息,其中可能包括:
-
exited :
已完成的交易数量 -
待标记IDs为已完成的请求清单
-
IDs要标记为已放弃的请求清单
此数据用于确定服务计数器要增加多少。在某些情况下,根据当前的客户端数量,可能没有额外的容量来增加计数器。
定期
使用周期策略时, CloudWatch 规则每分钟调用 Lambd PeriodicInlet
a 函数,将发球计数器增加固定数量。定期入口使用事件开始时间、结束时间和增量进行参数化。或者,此策略还会检查 CloudWatch 警报,如果警报处于OK
状态,则执行增量,否则会跳过警报。站点集成商可以将利用率指标连接到警报,并使用该警报来暂停定期入口。此策略仅在当前时间介于开始时间和结束时间之间时更改发球位置,并且可以选择指定警报处于OK
状态。
定制和扩展解决方案
贵组织的站点管理员必须决定在等候室中使用的集成方法。有两个选项:
-
直接使用APIs和API网关授权方进行基本集成。
-
通过身份提供商集成 OpenID。
除了上述集成之外,您可能还需要配置域名重定向。您还负责部署自定义的等候室网站页面。
Virtual Waiting Room on AWS 解决方案旨在通过两种机制进行扩展: EventBridge 用于单向事件通知和RESTAPIs用于双向通信。
配额
虚拟等候室开启的主要规模限制 AWS 是已安装区域的 Lambda 限制限制。 AWS 当安装到具有默认 Lambda 并发运行配额的 AWS 账户中时,虚拟等候室 AWS 解决方案每秒最多可以处理 500 个客户请求队列中的职位。每秒 500 个客户端的速率基于该解决方案,所有 Lambda 函数并发配额限制都是独家提供的。如果账户中的区域与其他调用 Lambda 函数的解决方案共享,则 AWS 解决方案的虚拟等候室应至少有 1,000 个可用的并发调用。您可以使用 CloudWatch 指标来绘制账户中随时间变化的 Lambda 并发调用次数来做出决定。您可以使用 S ervice Quotas 控制台请求增加配额
每秒每增加 500 个客户端,将您的油门限制提高 1,000。
预计每秒传入用户数 | 建议的并发执行配额 |
---|---|
0-500 | 1,000(默认) |
501-1,000 | 2000 |
1,001-1,500 | 3000 |
Lambda 的固定突发限制为 3,000 次并发调用。有关更多信息,请参阅 Lambda 函数扩展。如果返回的错误代码表示暂时出现节流情况,则客户端代码应该预料并重试一些API调用。等候室客户端示例包含此代码,以此作为如何设计用于高容量和高突发事件的客户端的示例。
此解决方案还兼容 Lambda 预留和预配置并发以及自定义配置步骤。有关详细信息,请参阅管理 Lambda 预留并发。
可以进入等候室、接收令牌并继续进行交易的用户上限受到 Elasticache (Redis) 计数器OSS上限的限制。计数器用于等候室的服务位置和跟踪解决方案的摘要状态。Elasticache(RedisOSS)中使用的计数器的上限为 9,223,372,036,854,775,807。DynamoDB 表用于存储发放给等候室用户的每个令牌的副本。DynamoDB 对表格的大小没有实际限制。
区域部署
该解决方案使用的服务在所有 AWS 区域均受支持。有关按地区划分的最新 AWS 服务可用性,请参阅AWS 区域服务列表