我们一直在将我们的api从python移动到节点。我们在Python应用引擎apis中使用了任务队列。现在,app引擎支持node.js,您是否建议我们使用任务队列或云发布/订阅来完成任务?每种方法的优点/缺点包括可靠性,可移植性等。
答案 0 :(得分:12)
任务队列和Pub / Sub具有不同的消息传递模型,因此对不同的事物很有用。当Pub / Sub使用发布者 - 订阅者模型时,任务队列会收集任务并将其分发给工作人员。
使用Pub / Sub分发任务不如使用任务队列那么自然。发布/订阅主题的所有订阅者都可以看到所有消息,而在任务队列中,消息仅由一个接收者使用。另一方面,任务队列的设计并不是为了广播消息。
目前,任务队列在App Engine上运行得最好。虽然有一个实验性的任务队列REST API,但任务队列是原生的,并且在App Engine上运行得最好。 Pub / Sub可以在任何地方使用。当任务队列任务自动分发到App Engine实例时,您需要进行其他设置以使用Pub / Sub进行应用程序内部通信。
任务队列还提供特殊功能,例如延迟消息。
修改强>
不幸的是,看起来推送任务队列还没有在Node.js App Engine运行时准备就绪。
Pub / Sub解决方案Kamal在下面指出了一个很好的技巧来模拟基于拉的负载平衡。如果你对拉模式没问题,使用Pub / Sub可能是正确的方法,尽管我想明确表示当使用pull时,node.js的AE任务队列API可用(https://github.com/google/google-api-nodejs-client/tree/master/apis)。 / p>
要考虑使用pull还是push,要考虑的是重试策略略有不同。任务队列项可以配置为无限期重试,而我认为Pub / Sub将在7天后未确认时停止尝试传递消息。
如果您决定使用PubSub推送模式,需要考虑的其他事项是:
在另一个注释中(响应下面的第一个响应),它看起来确实支持memcache集成。它有一个位于https://cloud.google.com/appengine/docs/flexible/nodejs/caching-application-data的文档页面。