工作原理

函数运行时的容器模型

函数计算将在事件触发代表您执行函数,根据您的配置信息(如内存大小等)进行资源分配,并启动和管理容器(即函数的执行环境)。 平台将负责所有函数运行容器的创建管理和删除清理操作,用户没有权限对其进行管理。

在容器启动时需要一些时间,这会使得每次调用函数时增加一些延迟。但是,通常仅在首次调用函数、更新函数、或长时间未调用时重新调用时会察觉到此延迟,因为平台为了尽量减少此启动延时,会尝试对后续调用重用容器,在调用函数后容器仍会存留一段时间,预期用于下次调用。在此段时间内的调用会直接重用该存留的容器。

容器重用机制的意义在于:

  • 用户代码中在入口方法以外任何声明保持已初始化的状态,再次调用函数时可以直接重用。例如,如果您的函数代码中建立了数据库连接,容器重用时可以直接使用原始连接。您可以在代码中添加逻辑,在创建新连接之前检查是否已存在连接。
  • 每个容器在/tmp 目录中提供部分磁盘空间。容器存留时该目录内容会保留,提供可用于多次调用的暂时性缓存。再次调用函数时有可能可以直接使用该磁盘内容,您可以添加额外的代码来检查缓存中是否有您存储的数据。

注意:

请勿在函数代码中假定始终重用容器,因为是否重用和单次实际调用相关,无法保证是创建新容器还是重用现有容器。

临时磁盘空间

函数在执行过程中,都拥有一块临时磁盘空间/tmp,用户可以在执行代码中对该空间进行一些读写操作,但这部分数据可能不会在函数执行完成后保留。因此,如果您需要对执行过程中产生的数据进行持久化存储,请使用 FDS 或 Redis/Memcached 等外部持久化存储。

执行环境和可用库

当前函数计算的执行环境建立在以下基础上:

  • 标准 alpine

如果需要在代码中包含可执行的二进制文件、动态库或静态库,请都确保兼容此执行环境。

results matching ""

    No results matching ""