【问题标题】:Understanding Firebase cloud function "cold start"了解 Firebase 云功能“冷启动”
【发布时间】:2020-12-23 18:43:10
【问题描述】:

文档中提到

函数是无状态的,执行环境经常 从头开始初始化,称为冷启动。

这句话暗示* 有时 *,函数不是从头开始初始化,状态可以被重用。

这是一个可靠的假设吗?

插图

var count = 0; // global variable

functiion mycouldFunction(){
  count ++;
  return count;

}

如果我调用myCloudFunction 两次,间隔 X 时间,我应该期望它返回 '1' 然后 '2'

然后在 Y 时间之后的第三次调用,我应该期望它再次返回“1”?

如果是这样,X 和 Y 的值是多少?

【问题讨论】:

标签: firebase google-cloud-platform google-cloud-firestore google-cloud-functions


【解决方案1】:

Cloud Functions 确实有时会重用服务器实例来处理多个请求,作为一种优化。无法保证是否或何时会发生这种情况。除非您自己实现某种优化(例如内存缓存),否则不建议在全局内存中存储任何内容,因为您的函数可能会因任何一次调用而受到冷启动。

【讨论】:

    【解决方案2】:

    不,云函数是无状态的,所以每次调用 myCloudFunction 时都会返回 1。

    要实现您想要的,您需要将更新后的值存储在 Firestore 或 RTDB 或类似设备中,并在每次加载时读取更新后的值。

    “冷启动”所指的与上述无关,它是指功能的服务方式。 GCF 将“关闭”不经常使用的函数,因此它们的响应速度可能比“打开”并准备接收请求的函数慢。

    【讨论】:

    • 这不是真的。虽然函数在一般意义上是无状态的,但 Cloud Functions 实际上将重用服务器实例以及任何全局内存,以供将来的某些调用使用。只是不能保证这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 2019-07-15
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多