How can serverless computing improve performance? | Lambda performance

在无服务器架构中,拥有更多的接入点会对性能产生巨大的积极影响。

学习目标

阅读本文后,您将能够:

  • 了解有关 AWS Lambda、Lambda@Edge 和 Cloudflare Workers 的信息
  • 查看平台之间的性能差异
  • 了解延迟和接入点

复制文章链接

无服务器如何提高性能?

无服务器计算的一个优点是可以从任何地方运行应用程序代码。如定义所示,无服务器架构中没有源站;因此,代码可以在靠近最终用户的边缘位置运行。两个利用此功能、从而减少延迟的无服务器平台是 AWS Lambda@Edge 和 Cloudflare Workers。通过比较 Lambda 与 Cloudflare Workers 和 Lambda@Edge 的性能,可以观察在边缘部署无服务器应用程序的效果。测试结果(如下)表明,Cloudflare Workers 通常具有更快的响应速度。

什么是 AWS Lambda?

AWS Lambda 是 Amazon Web Services 提供的无服务器基础设施服务。Lambda 托管以多种语言编写的事件驱动型应用程序功能,并在需要时启动和运行这些功能。

AWS Lambda 部署在哪里?

AWS 在全球范围提供众多部署区域。通常,Lambda 托管的应用程序仅托管在这些区域中的某一个区域。

什么是 AWS Lambda@Edge?

AWS Lambda@Edge 是部署在全球各地的所有 AWS 区域,而不是一个当地地理区域的 Lambda 服务。尽管 Lambda 支持多种语言,但 Lambda@Edge 功能在 Node.js(用于执行 JavaScript 的运行时环境)上运行。触发 Lambda@Edge 功能时,它会在最靠近触发事件源的 AWS 区域内运行,这意味着它在尽可能靠近使用该应用程序的人员或机器的区域运行。

例如,假设芝加哥的用户使用无服务器架构的应用程序请求一些信息。如果无服务器应用程序的基础设施使用 US-East-1 区域(位于弗吉尼亚州)内的 AWS Lambda 进行托管,请求须一直传送到弗吉尼亚州的 AWS 中心,响应也将从那里一直传回到芝加哥。但是,如果应用程序使用 AWS Lambda@Edge 托管,则请求和响应仅需往返于最近的 AWS 区域,即俄亥俄州的 US-East-2。与 AWS Lambda 相比,距离缩短减少了延迟。

AWS Lambda@Edge 与 Cloudflare Workers

Similar to AWS Lambda@Edge, Cloudflare Workers are event-driven JavaScript functions hosted from data centers around the world. However, there are many important differences between the two serverless infrastructure services. Cloudflare Workers run on Chrome V8 directly rather than Node.js, and Cloudflare has data centers in 200 cities around the world. Because they use V8 directly, Cloudflare Workers can start much faster and consume much fewer resources than other serverless platforms. In the example above, if the user in Chicago were trying to get a response from an application built with Cloudflare Workers, the request would travel to the Cloudflare PoP in Chicago rather than Ohio.

什么是延迟?延迟如何影响用户行为?

在网络中,“延迟”是加载所请求的信息之前的延迟时间长度。随着延迟增加,离开网页的用户数量也会随之增加。

即使加载时间小幅缩短,也可以大大提高用户参与度。例如,沃尔玛(Walmart)进行的一项研究表明,页面加载时间每缩短一秒钟,转化率就会提高 2%。相反,随着延迟增加,用户更可能停止使用网站或应用程序。随着传输距离缩短,延迟会减小。

什么是接入点(PoP)?

接入点(PoP)是通信网络相互连接的地方,在 Internet 语境中,它是人们连接到 Internet 的硬件(路由器、交换机、服务器等)的地方。在边缘网络中,接入点是边缘服务器位置。边缘上的 PoP 越多,就能为更多用户提供更快的响应速度,因为 PoP 在地理位置上靠近用户的可能性随 PoP 的增加而增加。

无服务器功能的平均响应速度有多快?

为了展示无服务器响应能力并测试在多个 PoP 部署无服务器功能的有效性,Cloudflare 对 AWS Lambda、Lambda@Edge 和 Cloudflare Workers 进行了测试。(测试功能是一些简单脚本,运行时会返回运行时间。)

下表显示了 AWS Lambda(蓝色)、AWS Lambda@Edge(绿色)和 Cloudflare Workers(红色)的功能响应时间。针对此测试,AWS Lambda 功能托管在 US-East-1 地区。

aws-lambda-vs-cloudflare-workers

在无服务器架构中,运行代码的位置(就地理位置而言)会对延迟产生影响。如果运行应用程序代码的位置距离用户较近,信息不必传输那么远,应用程序的响应速度就会更快,因此应用程序的性能将提升。尽管这三种服务的响应时间都会变化,但 Cloudflare Workers 的响应速度通常最快。Lambda@Edge紧随其后,证明了在多个位置运行无服务器功能的好处。

尽管 AWS 区域遍布全球,但 Cloudflare 的 PoP 总数更高。Cloudflare 还执行了仅限于北美地区的测试,并过滤了由 DNS 解析引起的延迟。下面显示的结果示例再次证明了更多 PoP 有助于减少延迟和提升性能。请注意,Cloudflare Workers 响应花费的时间最少。

lambda 与 workers

无服务器冷启动:无服务器架构中新进程的响应速度有多快?

在无服务器计算中,“冷启动”是指一个最近未运行的功能必须响应某个事件。此类功能需要“启动”后才能运行,这通常需要几毫秒的时间。这可能会导致其他延迟问题。下表比较了这三种服务的冷启动响应时间(经 Cloudflare 测试):

lambda 与 workers 冷启动

冷启动时,Cloudflare Workers 的响应速度非常快,通常不到 200 毫秒。相比之下,Lambda 和 Lambda@Edge 功能可能需要一秒多钟的时间才能完成冷启动响应。

差异主要源于 Cloudflare Workers 在 Chrome V8 而非 Node.js 上运行。Node.js 构建于 Chrome V8 之上,启动时间更长,并需要消耗更多内存。通常,V8 实例只需不到 5 毫秒的时间即可启动。

了解有关 Cloudflare Workers 的更多信息。