将任务队列迁移到云功能

时间:2018-03-12 09:05:16

标签: node.js python-2.7 google-app-engine google-cloud-functions task-queue

我们正在使用Google App Engine Standard Environment申请。我们使用的运行时是Python 2.7。我们有一个服务,它使用多个版本来部署应用程序 我们的大部分长期任务都是通过Task Queues完成的。其中大多数任务执行了大量Cloud Datastore CRUD操作。每当我们必须将结果发送回前端时,我们就会使用Firebase Cloud Messaging

我想尝试Cloud Functions来完成这些任务,主要是为了利用无服务器架构 所以我的问题是,如果我将任务从任务队列迁移到云功能,我可以期待什么样的好处?是否有任何准则告诉何时使用哪个选项?或者我们应该继续使用任务队列?

PS:我知道将用Python编写的代码迁移到Node.js会有麻烦,但我暂时忽略了这一点。

1 个答案:

答案 0 :(得分:3)

除了无服务器的优势之外,云功能还可以响应特定的events"粘贴"您的架构元素以合理的方式。它们具有弹性和自动伸缩 - 根据当前需求旋转和旋转(因此只有在实际使用时才会产生成本)。另一方面,如果管理执行并发对您很重要,Task Queues是更好的选择:

  

以可靠,稳定的速度推送队列调度请求。他们   保证可靠的任务执行。因为您可以控制费率   哪些任务是从队列发送的,你可以控制工人'   缩放行为,从而降低成本。

云功能一次只处理一个请求并且并行运行,这是不可能的。任务队列的另一个选择是更好的选择是处理没有成功的操作的重试逻辑。

您还可以使用云功能和App Engine Cron作业执行的操作是基于时间间隔而不是事件触发器来运行该功能。

作为旁注,谷歌正在努力实现Python到云功能。目前尚不清楚它何时会准备就绪,但肯定会在Google Cloud Platform Blog宣布。