Cloud Functions for Firebase 是否会使 firebase-queue 过时?

Does Cloud Functions for Firebase make firebase-queue obsolete?

我已经编写了一些服务器端代码来使用 firebase-queue](https://github.com/firebase/firebase-queue) 来实现可伸缩性,但是,随着 Cloud Functions for Firebase 的发布(及其对自动可伸缩性的承诺),我想知道是否需要队列……有没有人将这两种技术结合起来实现更大的目的?专门针对像@Frank van Puffelen 这样的 Firebase 开发人员,Functions 会取代 firebase-queue 吗?

firebaser 在这里

我不确定 firebase-queue 是否已过时。时间会证明一切。

但我们现在肯定会在很多以前使用 firebase-queue 和节点工作进程的场景中使用 Cloud Functions for Firebase。不再需要自带 Node.js 进程,提高了开发速度。 Cloud Functions 的自动扩展已被证明是无价的。

将 Cloud Functions 与 firebase-queue 结合使用似乎不合逻辑。如果您只是将节点附加到数据库并在您的函数中使用它们,您将拥有相同的行为而无需额外的库。

更新:我们的一位数据库工程师刚刚给出了一个Functions无法替代队列的场景。在进行备份时,工作人员需要挂载和卸载远程磁盘。该任务 可能 在云函数中是可能的,在独立的、自我管理的节点进程中更容易完成。

我不认为它只是说它取代了 firebase-queue 这么简单。理想情况下,您会在 firebase-queue 的大多数常见用例中使用函数。

但是,无论如何,使用 firebase-queue 可能也有一些合理的理由。

  1. 这是一个非常强大的排队系统,允许您使用多状态任务并允许您设置工作人员的数量。
  2. 它在您指定的环境而不是 App Engine 中运行(您可以在您的服务器上安装 GAE 中不可用的二进制文件)。
  3. 可能会更便宜,具体取决于带宽与调用的具体情况。
  4. 它可以免费联系第三方端点,而 Functions 需要付费帐户。
  5. 功能仍处于测试阶段,不提供 SLA,它们目前也有一些启动延迟,这在 firebase-queue 中是不会遇到的(这一点应该在 GA 发布时间前后失效)。

我不认为 Firebase 云函数应该使 firebase-queue 过时,而且我认为将 firebase-queue 与云函数结合起来根本不合逻辑,正如@@Frank van Puffelen 所说。

Firebase-queue 提供的不仅仅是任务监听 firebase 和启动任务的方式。它为分配和响应任务请求、协调失败任务的重试、报告进度、状态和其他元数据的各方之间的通信提供了一种协议。这允许的事情之一是任务链。

我认为 Firebase 或第三方开发扩展 firebase-functions 的 firebase-functions-queue 包会很有用,并允许您编写与 firebase-queue 具有相同签名的 firebase 云函数。像这样:

const functions = require('firebase-functions');
const functions-queue = require('firebase-functions-queue'); //extends firebase-functions with onQueue function

admin.initializeApp(functions.config().firebase);

functions.database.ref('/queue').onQueue(options,function(data,progress,resolve,reject){
    ...
    })

这个新包将像 firebase-queue 一样工作,并使用相同的元数据和选项,除了它不需要处理管理多个工作进程,因为云功能已经自动无缝地执行此操作。

这会有以下好处:

  • 将允许 firebase 开发人员使用标准方式将作业分配给队列、监控进度、失败等。
  • 应用程序可以将作业分配给队列,而不关心它是由云功能还是其他环境处理的。
  • 开发人员可以在不更改客户端应用程序的情况下将现有队列从他们的节点服务器移动到云功能。
  • 它甚至可以允许任务链,其中一项任务可以由云功能处理,而另一项任务可以由同一作业中的不同服务器处理。