无服务器计算如何提高性能?| Lambda 性能

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

Share facebook icon linkedin icon twitter icon email icon

无服务器性能

学习目标

阅读本文后,您将能够:

  • 了解有关 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

与 AWS Lambda@Edge 相似,Cloudflare Workers 是由世界各地的数据中心托管的事件驱动型 JavaScript 功能。但是,这两种无服务器基础设施服务之间有许多重要区别。Cloudflare Workers 直接在 Chrome V8 上运行,而不是在 Node.js 上运行,并且 Cloudflare 在全球 200 个城市拥有数据中心。由于它们直接使用 V8,因此,与其他无服务器平台相比,Cloudflare Workers 可以更快地启动并且消耗更少的资源。在上面的示例中,如果芝加哥的用户试图从使用 Cloudflare Workers 构建的应用程序获取响应,则该请求将传输到芝加哥(而不是俄亥俄州)的 Cloudflare PoP。

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

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

即使加载时间小幅缩短,也可以大大提高用户参与度。例如,沃尔玛(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 的更多信息。