【问题标题】:How a serverless function be faster than a normal endpoint called to a server?无服务器函数如何比调用服务器的普通端点更快?
【发布时间】:2020-09-02 10:34:09
【问题描述】:

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

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

【问题讨论】:

  • 在现实世界中,函数并不比虚拟机快。函数在容器中运行,这是一种虚拟化形式。这些容器需要加载(称为冷启动)、调度然后运行。它们并不比正确大小的虚拟机快。主要优势是可扩展性、经济性和通常改进的 DevOps。

标签: amazon-web-services google-cloud-platform google-cloud-firestore serverless-framework


【解决方案1】:

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

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

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

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

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

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

  • 专业人士:无需维护基础架构
  • 专业版:与其他云服务无缝集成
  • 骗局:供应商锁定

【讨论】:

    【解决方案2】:

    更多的误解是它更快,FaaS(功能即服务)只是在调用时执行的单个功能。如果你有无限的服务器容量来执行一个非常简单的功能,它也会很快。

    但是,无服务器从以下方面受益:

    • 通常更便宜(只为使用的东西付费,没有空闲时间)
    • 立即获得无限资源(无需等待扩大或缩小以满足需求)。
    • 组件解耦更简单,它只能做一件事。
    • 无需您的团队管理补丁和安全性开销,这一切都由您处理。

    人们喜欢无服务器,因为他们可以在短时间内将想法转化为 POC,而无需真正考虑资源需求。

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 2013-06-29
      • 1970-01-01
      • 2022-01-26
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      相关资源
      最近更新 更多