我想知道App Engine实例如何与Firebase数据库一起扩展。
让我们假设在数据库中具有以下对象结构:
tasksForServer
- taskID
- ...
- ...
- taskID
- ...
- ...
让我们假设我们有一个实例监听添加到tasksForServer
的每个新子项,因此实例可以处理即将进入的每个任务。
每秒进入的任务量超过10.000,必须快速处理。因此,即使每项任务都没有多少工作要做,一个实例迟早也无法处理进入的任务量。
我已经读过您可以在App Engine中添加更多实例,但是如果我理解正确,那么在这种情况下这是不可行的,因为实例正在监听新任务。
所以,我的第一个问题:以上是否正确?如果是,那将是一个什么解决方案?
我想过......像这样分开tasksForServer对象......
tasksForServer
- worker0
- taskID
- ...
- taskID
- ...
- worker1
- taskID
- ...
- taskID
- ...
...,根据需要添加工作人员,并在不同的“工作队列”中随机编写任务。
答案 0 :(得分:0)
可以添加新实例,如果enable auto-scaling in your app.yaml,应用引擎可以为您执行此操作。对于您的情况,您可能希望缩放取决于CPU利用率。
您的方法存在的问题是,所有正在运行的实例都将处理相同的任务,这些任务无法实现。
幸运的是,Firebase-Queue是为了解决这个问题而建立的。有了它,可以在多台计算机上初始化多个队列工作程序,Firebase-Queue将确保一次只有一个工作程序正在处理单个队列任务。您可以在此guide中阅读有关firebase-queue的更多信息。