【问题标题】:Do serverless functions install modules every time they are called?无服务器函数是否在每次调用时都安装模块?
【发布时间】:2022-11-30 00:40:38
【问题描述】:

无服务器函数是否在每次调用时都安装模块?

我试图了解无服务器功能的真正工作原理。我知道 serverfull 基本上是一台执行代码的计算机,服务器代码 24/7 全天候运行,除非它因某种原因停止。另一方面,我了解无服务器代码仅在调用时运行。此代码存储在哪里?当我在无服务器应用程序中调用一个函数时,它是否会在我每次调用该函数时安装模块(例如从 npm)?这是导致冷启动延迟的原因吗?

我明白 serverfull 就像我的电脑运行代码。我如何使用相同的类比来描述无服务器?

我的问题:

  1. 无服务器功能是否在每次调用时都安装模块?
  2. 如果没有server,serverless中这段代码存放在哪里?
  3. 我明白serverfull就像我的电脑运行代码。我如何使用相同的类比来描述无服务器?

【问题讨论】:

    标签: serverless serverless-framework serverless-architecture cold-start


    【解决方案1】:

    不,依赖项是部署工件的一部分(例如,在 AWS Lambda 的情况下是 ZIP 文件或容器映像),因此不必在每次调用时都安装它们。

    我明白 serverfull 就像我的电脑运行代码。我如何使用相同的类比来描述无服务器?

    这不会是一个完美的解释,但希望它符合您的类比。想象一下,您的计算机正在休眠,但是有另一台计算机可以接收请求并在收到新请求时唤醒您的计算机,因此它可以在您的计算机上运行。完成运行后,它会重新进入睡眠状态。但是,不是只有一台计算机,而是有许多可以在几毫秒内从睡眠中唤醒的计算机。希望这是有道理的。

    【讨论】:

    • 谢谢。我想我现在明白了。如果我错了,请纠正我。所以每个功能都有点像一个按命令运行的小型虚拟服务器?
    • 那么在 AWS Lambda 的情况下,每次调用函数时都会创建一个新容器吗?
    • 我刚刚读到“部署工件(或构建)是在生产环境中运行的应用程序代码:编译、构建、捆绑、缩小、优化等。通常,它是一个二进制文件或一堆文件压缩在档案中。在这种状态下,您可以存储工件并对其进行版本控制。”所以一个函数被构建成二进制文件,所以只要需要执行它就可以调用它,如果需要可以部署它的更多实例?
    猜你喜欢
    • 2021-06-02
    • 2019-03-20
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多