使用Firebase

时间:2016-11-03 13:35:43

标签: google-app-engine firebase firebase-realtime-database

我想知道App Engine实例如何与Firebase数据库一起扩展。

让我们假设在数据库中具有以下对象结构:

tasksForServer
- taskID
  - ...
  - ...
- taskID
  - ...
  - ...

让我们假设我们有一个实例监听添加到tasksForServer的每个新子项,因此实例可以处理即将进入的每个任务。

每秒进入的任务量超过10.000,必须快速处理。因此,即使每项任务都没有多少工作要做,一个实例迟早也无法处理进入的任务量。

我已经读过您可以在App Engine中添加更多实例,但是如果我理解正确,那么在这种情况下这是不可行的,因为实例正在监听新任务。

所以,我的第一个问题:以上是否正确?如果是,那将是一个什么解决方案?

我想过......像这样分开tasksForServer对象......

tasksForServer
- worker0
  - taskID
    - ...
  - taskID
    - ...
- worker1
  - taskID
    - ...
  - taskID
    - ...

...,根据需要添加工作人员,并在不同的“工作队列”中随机编写任务。

1 个答案:

答案 0 :(得分:0)

可以添加新实例,如果enable auto-scaling in your app.yaml,应用引擎可以为您执行此操作。对于您的情况,您可能希望缩放取决于CPU利用率。

您的方法存在的问题是,所有正在运行的实例都将处理相同的任务,这些任务无法实现。

幸运的是,Firebase-Queue是为了解决这个问题而建立的。有了它,可以在多台计算机上初始化多个队列工作程序,Firebase-Queue将确保一次只有一个工作程序正在处理单个队列任务。您可以在此guide中阅读有关firebase-queue的更多信息。