谷歌发布任务队列服务 Cloud Tasks

  • Eldert Grootenboer
  • 无明

2018 年 10 月 10 日

话题:DevOps语言 & 开发架构

谷歌发布了Cloud Tasks,这是一项针对谷歌云平台 App Engine 服务的任务队列服务。Cloud Tasks 允许从应用程序中异步执行任务,解耦服务并支持长期运行和在后台运行的活动。

借助 Cloud Tasks,应用程序可以将任务、由应用程序开发人员定义的工作单元放在分布式队列中,然后将这些队列推送给处理服务。任务队列的概念已经经过所有大型云提供商(如带有 SQS 的 AWS 和带有服务总线的 Azure)的实际验证。实际上,Cloud Tasks 是谷歌Task Queue服务的进阶版,它也提供了相同的概念。现在,所有现有的和新的任务队列的管理将整合到 Cloud Tasks 之下,正如谷歌云平台产品经理 Morgan Hallmon 在公告中所述的那样。

多年来,App Engine 客户利用了 Task Queue,这是一种支持异步任务执行的 App Engine 服务。随着 Cloud Tasks 的发布,任务队列的所有管理工作现在都集中到 Cloud Tasks 控制台、命令行和 API 中。

使用任务队列有几个好处,例如让系统变得松散耦合,将工作负载分摊给后台服务,以及通过为系统之间的任务提供存储来提高可靠性。

来源: https://en.wikipedia.org/wiki/Scheduling_(computing)#task_queue

最初,Cloud Tasks 似乎与谷歌的其他队列服务(如 Pub/Sub)有很多重叠的地方。虽然相似之处是显而易见的,但两者之间的用例确实不同。Google 将 Pub/Sub 定位为专注于大数据和网络运营的服务,提供高吞吐量,同时保持对内容和目标应用程序的不可知性。而 Cloud Tasks 提供的是托管执行服务,可以处理很多显式的命令,这些命令通过后台进程来处理。

此外,与 Task Queues 不同的是,Cloud Tasks 将集成到整个 GCP 服务范围内。Cloud Tasks 的文档描述了一些典型的用例,包括加速用户体验、在发生事件期间提供持久性以及平缓流量峰值。

通过将可能较慢的后台操作(如数据库更新)委派给进程服务来加快响应速度;

在发生意外事件的情况下保留请求;

将非面向用户的任务从用户请求流程中移除,以此来实现平缓流量高峰。

由于 Cloud Tasks 是一种托管服务,它负责资源的配置和管理,让开发人员可以专注于创建和处理其他任务。此外,Cloud Tasks 根据实际执行时间计费。客户端库由谷歌提供,支持 Java、Python、Node.js、PHP 和 Go 等几种流行语言,同时还提供了 REST API,可以从任何应用程序中将任务添加到队列。

来源:https://cloud.google.com/blog/products/application-development/announcing-cloud-tasks-a-task-queue-service-for-app-engine-flex-and-second-generation-runtimes

要使用 Cloud Tasks,需要执行几个步骤。从创建任务队列开始,在创建好队列后,发布任务的应用程序就会将任务推送到队列中,队列存储消息并返回 OK。随后,Cloud Tasks 服务将任务发送给后台的处理应用程序进行处理。任务处理完成后,后台程序将 OK 作为 200 到 299 之间的 HTTP 状态码发送回队列,队列将对应的任务移除。此外,如果处理程序未及时处理完任务,Cloud Tasks 将自动再次发送任务,提供重试和至少一次交付的能力。

查看英文原文Google Announces Task Queue Service Cloud Tasks

DevOps语言 & 开发架构