谷歌发布了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将自动再次发送任务,提供重试和至少一次交付的能力。

Comments are closed.