【问题标题】:Most efficient structure for cloud functions in FirebaseFirebase 中最有效的云功能结构
【发布时间】:2019-03-22 18:16:30
【问题描述】:

实时数据库触发函数的以下两个选项是否存在性能差异?:

  1. 一种云函数,可侦听所有子节点并根据路径决定执行什么
  2. 每个子节点都有一个完全独立的云功能。

这是假设函数执行的总数保持不变。

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-functions


    【解决方案1】:

    如果有多个事件同时发生,可能是有问题(来自https://cloud.google.com/functions/docs/concepts/exec):

    Cloud Functions 可以启动多个函数实例来扩展您的 功能满足当前负载。这些实例并行运行, 这会导致执行多个并行函数。

    但是,每个函数实例只处理一个并发请求 一次。这意味着当您的代码正在处理一个请求时,有 不可能将第二个请求路由到同一功能 实例,并且原始请求可以使用全量 您请求的资源(CPU 和内存)。

    除此之外,单独的云函数的逻辑应该比为每个触发器检查一个单一的函数要简单得多。

    【讨论】:

    • 也许我没有正确解释这一点,但没有看到这将是一个问题,就好像这些函数是单独的函数一样,它们对于每个请求也是不同的实例。除非每个函数名都有配额?
    • 对不起,我应该澄清得更好,我的理解是性能方面,一个大的云功能应该更慢(它需要根据每个事件通过决策逻辑)与多个云决策逻辑已经存在的功能。如果你有 99 个事件没有被触发很多,但有 1 个事件触发了,那么我猜一个大的云函数会变得浪费?
    • 我明白了,虽然我的决策逻辑并不复杂,因为它只是获取路径名并将其路由到正确的文件,然后需要正确的包。只是不确定是否有更严重的事情正在发生,这将保证切换回单独功能的时间。当我们在 Spark 计划中时,我已经将它们全部合并为一个,这样我们就可以用一行代码部署该功能。
    • 你能澄清一下用一行代码部署函数的意思吗?那只是firebase deploy --only functions吗?
    • 现在我们在 blaze 计划中,是的,但是在 spark 计划中,它不允许我们一次部署许多功能,所以我们必须分批进行,并放置许多(不是全部) ) 将我们的功能合并为 1 个功能帮助我们节省了部署时间
    猜你喜欢
    • 2020-07-26
    • 2017-10-28
    • 2021-01-12
    • 2020-06-09
    • 2021-10-26
    • 1970-01-01
    • 2018-11-29
    • 2018-05-09
    相关资源
    最近更新 更多