Marcia是亚马逊云服务(AWS)的首席开发倡导者,拥有20年的软件行业工作经验,专注于构建和拓展应用程序。她最近在一篇博文中分享了一个重大改进,即AWS Lambda的扩展速度提高了12倍。
在更新之后,每个同步调用的Lambda函数现在每10秒可以扩展1000个并发执行,直到达到账户的并发限制。每个功能现在都可以独立地扩展,无论它们如何被调用。这些改进不需要额外成本,并且不需要对现有功能进行任何配置。
传统架构构建可扩展且高性能应用程序可能具有挑战性,需要过度配置计算资源或复杂的缓存解决方案来满足峰值需求和不可预测的流量。许多开发人员选择Lambda是因为它可以按需扩展,当应用程序面临不可预测的流量时特别有用。
在此更新之前,Lambda函数最初可以在第一分钟内在账户级别扩展500-3000个并发执行(取决于区域),然后每分钟扩展500个并发执行,直到达到账户的并发限制。由于这个扩展限制是由同一账户和区域中的所有功能共享的,所以如果有一个功能遇到了大量流量,可能会影响同一账户中其他功能的吞吐量。这增加了监控超出账户限制的功能的工程工作量,并降低了同一账户中其他功能的总体并发性。
通过这些扩展改进,流量变化较大的客户现在可以更快地达到并发目标。例如,新闻网站发布突发新闻报道,或者在线商店进行限时抢购,都会有大量访问者涌入。由于这些改进,它们现在的扩展速度比以前快了12倍。
使用Amazon Athena和Amazon Redshift等服务,以及基于Lambda的标量UDF来执行数据丰富或数据转换的客户也将受益于这些改进。这些服务依赖于批处理数据并将其分块传递给Lambda,同时调用多个并行函数。增强的并发扩展行为确保Lambda可以快速扩展并满足服务级别协议(SLA)要求。
Lambda的实践中,每10秒接收并处理请求。账户并发限制设置为7000个并发请求,并在同一账户中的所有功能之间共享。每个函数的扩展速率固定为每10秒1000个并发执行。这个速率是独立于同一账户中的其他功能的,这样可以更容易地预测该函数的扩展和请求的限制。
默认情况下,所有函数都会启用这些扩展改进。从去年11月26日开始到12月中旬,AWS将逐步向除中国和GovCloud区域之外的所有AWS区域推出这些扩展改进。
Lambda不会累积未使用的并发扩展率的部分。这意味着,在任何时刻,你的扩展速率始终最大为1000个并发单元。例如,如果在10秒的时间间隔内没有使用任何可用的1000个并发单元,那么在接下来的10秒间隔内就不会增加1000个额外的单元。在接下来的10秒内,并发扩展率仍然是1000。只要你的函数继续接收越来越多的请求,Lambda就会尽快扩展,达到账户的并发限制。你可以通过配置保留并发来限制单个函数可以使用的并发量。如果请求的速度快于函数的扩展速度,或者函数已达到最大并发状态,其他请求将失败,并返回节流错误(状态码429)。
以前,在一个账户中,Lambda函数共享扩展限制,如果一个函数遇到高流量,则可能导致潜在的吞吐量问题。AWS Lambda函数更新后,扩展速度提高了12倍。现在,每个函数每10秒可以扩展1000个并发执行,独立于同一账户中的其他函数,直到达到账户的总并发限制。这个更新不需要额外的成本或配置,并且将提供更快速的扩展响应和更好的性能。