Firebase的云功能是否会使firebase-queue过时?

时间:2017-03-10 18:03:16

标签: firebase google-cloud-functions firebase-queue

我已经编写了一些服务器端代码来使用firebase-queue](https://github.com/firebase/firebase-queue)来实现可伸缩性,但是,随着Firebase for Firebase的发布(以及它对自动可扩展性的承诺),我想知道是否Queue有什么需要......有没有人将这两种技术结合起来以达到更大的目的?特别是像@Frank van Puffelen这样的Firebase开发者,函数会替换firebase-queue吗?

3 个答案:

答案 0 :(得分:11)

firebaser here

我不确定firebase-queue是否过时。时间将不得不说明。

但我们现在肯定在很多情况下使用Cloud Functions for Firebase,我们以前使用过firebase-queue和一个节点工作进程。不再需要使用我们自己的Node.js进程可以提高开发速度。事实证明,云功能的自动扩展已经非常宝贵。

将云功能与firebase-queue结合起来似乎不合逻辑。如果您只是将节点附加到数据库并在函数中使用它们,则无需额外的库就可以获得相同的行为。

更新:我们的一位数据库工程师刚刚提供了一个功能无法替换队列的方案。进行备份时,工作人员需要安装和卸载远程磁盘。该任务可能可以在云功能中实现,在独立的自我管理节点流程中更容易实现。

答案 1 :(得分:7)

我认为Firebase云功能不应该使firebase-queue过时,我认为想要将firebase-queue与云功能结合起来并不合理,如@@ Frank van Puffelen所说。

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

我认为Firebase或第三方开发firebase-functions-queue软件包会扩展firebase-functions并允许你编写一个与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开发人员使用标准方式将作业分配给队列,监控进度,失败等。
  • 应用可以将作业分配给队列,而不关心它是由云功能还是其他环境处理。
  • 开发人员可以使用现有队列并将其从节点服务器移动到云功能,而无需更改客户端应用程序。
  • 它甚至可以允许任务链接,其中一个任务可以由云功能处理,另一个任务可以由同一作业内的不同服务器处理。

答案 2 :(得分:5)

我认为它不如说取代firebase-queue一样简单。理想情况下,您可以将函数用于firebase-queue的大多数常见用例。

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

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