Firebase 可调用函数冷启动

Posted

技术标签:

【中文标题】Firebase 可调用函数冷启动【英文标题】:Firebase Callable Functions cold-start 【发布时间】:2022-01-08 20:05:36 【问题描述】:

我想使用 Firebase 可调用函数在后端运行检查,但我担心冷启动。例如,我想检查用户是否有足够的积分来下载某个产品,但我想避免用户在这个承诺得到解决或拒绝之前等待 10 秒或更长时间,并且从前端运行这些检查是没有选择的因为任何人都可以绕过它们。

有没有办法在 Firebase 上为一组选定的可调用函数进行配置,这样整个体验就不会让用户感到缓慢和令人沮丧?许多用户如果必须等待 10 秒(即使只是第一次)可能会放弃使用我想出售的这项服务...

【问题讨论】:

【参考方案1】:

有没有办法为选定的可调用组进行配置 Firebase 上的功能?

是的,如doc 中所述,您可以使用runWith 参数为给定的云函数设置最小实例数,如下所示:

exports.myCallableCloudFunction = functions
    .runWith(
      // Keep 1 instance warm
      minInstances: 1,
    )
    .https.onCall((data, context) => 
      // Cloud Function code
    );

您可以通过传递所需的值来使多个实例保持温暖,例如minInstances: 3.

请注意,“保持运行的最小实例数会在空闲率下产生计费成本。通常,保持一个空闲函数实例的温暖成本低于每月 6.00 美元”(摘自文档)。


还请注意,您需要使用此选项配置每个 Cloud Functions,AFAIK 您不能将其应用于一组 Cloud Functions。

【讨论】:

嘿,谢谢我完全忽略了这一点!确实,它有点扼杀了无服务器功能的价格点,但如果我将其保持在最低限度,它可能会起作用。人们还建议在快速路线上使用玉米作业来“ping”某些功能并每隔 x 时间保持它们温暖......你认为这会是一个有效的替代方案吗? “您认为这是一个有效的替代方案吗?” => 不是 100% 可靠的解决方案... Cloud Function 平台可能会在两次 ping 之间杀死您的 Cloud Function 实例。我会尝试一个温暖的实例。 哦,那真是太糟糕了,感谢您在尝试自己解决这个问题时让我头疼不已!

以上是关于Firebase 可调用函数冷启动的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 可调用函数 + CORS

Firebase 可调用云函数 CORS 错误

Firebase 可调用函数失败 CORS 重定向

Firebase可调用函数+ CORS

应用检查对 Firebase 可调用函数的不必要强制执行

使用 Firebase 可调用函数时如何检索用户的身份验证数据?