代码之家  ›  专栏  ›  技术社区  ›  0xC0DED00D

将任务队列迁移到云功能

  •  0
  • 0xC0DED00D  · 技术社区  · 6 年前

    我们正在使用 Google App Engine Standard Environment 用于我们的应用程序。我们使用的运行时是 Python 2.7 . 我们有一个使用多个版本部署应用程序的单一服务。
    我们的大部分长期任务都是通过 Task Queues . 这些任务中的大多数都做了很多 Cloud Datastore 积垢操作。每当我们必须将结果发送回前端时,我们使用 Firebase Cloud Messaging 为此。

    我想试试 Cloud Functions 对于这些任务,主要是利用无服务器架构。
    因此,我的问题是,如果我将任务从任务队列迁移到云功能,我能期望得到什么样的好处?是否有任何指导原则告诉我们何时使用哪个选项?或者我们应该留在任务队列中吗?

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   arudzinska    6 年前

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

    推式队列以可靠、稳定的速率调度请求。他们 保证可靠的任务执行。因为您可以将速率控制在 从队列中发送哪些任务,您可以控制工作人员的 扩展行为,从而降低成本。

    对于一次只处理一个请求并并行运行的云函数来说,这是不可能的。任务队列的另一个更好选择是为未成功的操作处理重试逻辑。

    您还可以将云功能与 App Engine Cron 作业是基于时间间隔而不是事件触发器运行函数。

    作为补充说明,Google也在致力于实现Python到云的功能。现在还不知道什么时候会准备好,但肯定会在 Google Cloud Platform Blog .