首页 > 解决方案 > 无服务器函数如何比调用服务器的普通端点更快?

问题描述

据我所知,
无服务器函数(例如:Firebase Cloud Function)每次调用都会执行整个代码。它可能包括加载依赖项、第 3 方模块、设置数据库连接和拆除它们等,这需要花费大量时间。
在传统服务器中,所有依赖项都被加载,数据库连接被缓存和重用。

因此,无服务器函数如何比典型的服务器调用更快地工作?

标签: amazon-web-servicesgoogle-cloud-platformgoogle-cloud-firestoreserverless-framework

解决方案


“无服务器”功能只不过是一个普通的服务器(可能是一个容器),所有正常的依赖项和东西都是按需加载的。

因此,当您进行 API 调用时会创建一个服务器(因此当您没有收到这些 API 调用时会为您节省资金)。现在,一旦创建了这些服务器(容器)中的一个,您可能会保留它一段时间,以便随着时间的推移让它处理更多的 API 调用。当您的服务器的流量下降时,您可以将其终止以节省成本。

因此,您可以想象最终的结果是您进行的第一个 API 调用需要大量时间(“冷启动”),然后后续请求很快(因为一切都已设置好)。

现在取决于分配给这些“按需服务器”的资源量——它们可能比更传统的服务器更快。我还猜想,由于这些是云提供商提供的一流产品,它们的实现比其他可能做同样事情的服务更优化(比如 RDS 比在 EC2 上运行的数据库更快)。

因此,平均而言,您可能会看到您的无服务器功能执行得更快。当然,总会有“冷启动”问题,这对您来说可能是个问题。

当然还有其他优点和缺点:

  • 优点:无需维护基础设施
  • 优点:与其他云服务无缝集成
  • 缺点:供应商锁定

推荐阅读