【问题标题】:Firebase event listening on multi server clustered node多服务器集群节点上的 Firebase 事件监听
【发布时间】:2018-05-10 16:11:58
【问题描述】:

我在节点上使用 firebase 实时数据库。我正在使用节点集群来分叉不同的子进程。对于每个进程,firebase 事件侦听器都会被初始化。但我只想在我的应用程序中听一次 firebase 事件。

节点应用程序的多个实例启动多个观察者,当我基于侦听器对 firebase db 执行某些更新时,这会改变 firebase 数据库中数据的完整性。我,稍后还将在多个 aws 实例上集群节点应用程序。

我的代码看起来像这样

if(cluster.isMaster){
  for (var i = 0; i < numWorkers; i++) {
    cluster.fork();
  }
}else{
  // initalize firebase event listeners
  firebaseEvents();
}

我想知道如何设置多个节点服务器集群在一起,因为每台服务器都有互联网连接并且可以监听 firebase 事件。但是观察者应该只在所有服务器上运行一次代码。

【问题讨论】:

    标签: node.js amazon-web-services firebase-realtime-database message-queue node-cluster


    【解决方案1】:

    您尝试做的与Firebase Queue 非常接近,后者在底层使用Firebase Database transactions 来确保有限数量的客户端之间的数据一致性。

    Firebase 队列的自述文件包含以下消息:

    firebase-queue 可能会继续有特定的用例,但是如果您正在为 Firebase 寻找一个通用的、可扩展的队列系统,那么在 Google Cloud Functions for Firebase 之上构建可能是理想的路线。

    我认为后者也可能适用于您。除非让这个系统正常工作是一项学术练习,否则您可能会发现 Cloud Functions 是一种更简单的方法来启动和运行自动缩放后端。

    【讨论】:

    • 谢谢,Firebase 云功能看起来不错,但我也想知道是否还有其他解决方案。我不愿意将我的整个代码部署到云功能中,因此也不愿意与他们的托管服务相关联。一般来说,在运行相同代码的节点应用程序集群上,处理诸如 firebase 等一般事件的标准方法是什么,发出事件甚至是多次运行的 crons。我对这个解决方案非常满意,但只是对其他有效解决问题的方法感到好奇。
    • 如果您想自己构建它,请查看 Firebase Queue(如我回答的第一部分所述)。它使用事务来确保客户端/工作者之间的数据完整性。
    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    相关资源
    最近更新 更多