用于移动应用程序和节流的 AWS Lambda
AWS Lambda for mobile app and throttling
根据docs、"by default, AWS Lambda limits the total concurrent executions across all functions within a given region to 100."
考虑使用 Lambda 进行后端处理的简单移动应用程序。如果我正确理解约束,一次不会发生超过 100 个并发执行,这意味着如果我有 100 个用户同时调用 lambda 函数,会有节流约束吗?
我知道我可以致电客户支持并提高该限制,但这是对约束的正确解释吗?这应该如何扩展到 1000、10,000 或 1,000,000 个用户?
更新: 自从写了这个答案后,并发执行的默认限制增加了 10 倍,从 100 增加到 1,000。该限制是针对每个帐户、每个区域的。
By default, AWS Lambda limits the total concurrent executions across all functions within a given region to 1000
http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html#concurrent-execution-safety-limit (link visited 2017-05-02)
但是,和以前一样,这是一种保护性控制,如果您向他们展示您的用例并获得批准,AWS 支持将提高限制。在 support center 中创建此类请求不收费,提高限制也不收费。
Lambda 平台还可能允许超出您的限制的偏移,如果它认为适当的话。这种操作背后的逻辑没有记录,但一个合理的假设是,如果流量看起来是真正的 demand/load 驱动,而不是 Lambda 函数直接调用更多 Lambda 函数的失控环回条件的结果或间接。
失控情况的一个有趣示例可能是这样的:一个存储桶有一个调用 Lambda 函数的创建对象事件,它在同一个存储桶中创建 2 个对象...它调用同一个 Lambda 函数 4 次,创建 8 个对象...调用 lambda 函数 8 次,创建 16 个对象。
在大约第 15 次迭代中,这只需要 秒,理论上您将有 32,768 次并发调用试图创建 65,536 个对象。在大多数情况下,现实世界中的流量增长要慢得多。
if I have 100 users invoking lambda functions at the same time, there will be throttling constraints
是的,这就是 "concurrent."
背后的想法
How is this supposed to scale
没有人说会,有限制。
此限制是一种保护性控制,并不反映平台的实际限制。
而且,您的用户向 Lambda 发出 并发 请求的可能性有多大?假设您的 Lambda 函数运行 100 毫秒,您可以在 100 次并发调用的限制下每秒处理大约 750 次调用,阻塞概率仅为 0.1%。
(这是一个 Erlang B 计算,似乎适用于此。当然,在没有随机到达的情况下,对于 100 毫秒的函数,"pure" 容量将为 100 × 10 = 1000 invocations/sec)。
根据docs、"by default, AWS Lambda limits the total concurrent executions across all functions within a given region to 100."
考虑使用 Lambda 进行后端处理的简单移动应用程序。如果我正确理解约束,一次不会发生超过 100 个并发执行,这意味着如果我有 100 个用户同时调用 lambda 函数,会有节流约束吗?
我知道我可以致电客户支持并提高该限制,但这是对约束的正确解释吗?这应该如何扩展到 1000、10,000 或 1,000,000 个用户?
更新: 自从写了这个答案后,并发执行的默认限制增加了 10 倍,从 100 增加到 1,000。该限制是针对每个帐户、每个区域的。
By default, AWS Lambda limits the total concurrent executions across all functions within a given region to 1000
http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html#concurrent-execution-safety-limit (link visited 2017-05-02)
但是,和以前一样,这是一种保护性控制,如果您向他们展示您的用例并获得批准,AWS 支持将提高限制。在 support center 中创建此类请求不收费,提高限制也不收费。
Lambda 平台还可能允许超出您的限制的偏移,如果它认为适当的话。这种操作背后的逻辑没有记录,但一个合理的假设是,如果流量看起来是真正的 demand/load 驱动,而不是 Lambda 函数直接调用更多 Lambda 函数的失控环回条件的结果或间接。
失控情况的一个有趣示例可能是这样的:一个存储桶有一个调用 Lambda 函数的创建对象事件,它在同一个存储桶中创建 2 个对象...它调用同一个 Lambda 函数 4 次,创建 8 个对象...调用 lambda 函数 8 次,创建 16 个对象。
在大约第 15 次迭代中,这只需要 秒,理论上您将有 32,768 次并发调用试图创建 65,536 个对象。在大多数情况下,现实世界中的流量增长要慢得多。
if I have 100 users invoking lambda functions at the same time, there will be throttling constraints
是的,这就是 "concurrent."
背后的想法How is this supposed to scale
没有人说会,有限制。
此限制是一种保护性控制,并不反映平台的实际限制。
而且,您的用户向 Lambda 发出 并发 请求的可能性有多大?假设您的 Lambda 函数运行 100 毫秒,您可以在 100 次并发调用的限制下每秒处理大约 750 次调用,阻塞概率仅为 0.1%。
(这是一个 Erlang B 计算,似乎适用于此。当然,在没有随机到达的情况下,对于 100 毫秒的函数,"pure" 容量将为 100 × 10 = 1000 invocations/sec)。