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

eye*_*zzi 7 firebase google-cloud-functions firebase-queue

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

Fra*_*len 11

这里有一个firebaser

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

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

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

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


jjj*_*jjs 7

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

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

我认为Firebase或第三方开发firebase-functions-queue软件包对扩展firebase-functions并允许你编写一个firebase云功能与firebase-queue具有相同的签名是有用的.像这样的东西:

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){
    ...
    })
Run Code Online (Sandbox Code Playgroud)

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

这将具有以下优点:

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


Kat*_*ato 5

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

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

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