我们如何将谷歌云任务作为一项单独的服务,将其他微服务中的作业和功能排入队列



我最近一直在研究谷歌云任务及其在任务排队中的用途。然而,据我所知,似乎只有在谷歌云应用引擎上运行作业时,我们才能在后台运行作业。

我正在尝试在不同的微服务中使用谷歌云任务,这些微服务是使用Kubernetes部署的,不在谷歌云应用引擎上。所以,我看到的大多数例子都是将任务的结果放入队列,这不是我想要的。

我想把一个任务(从我的微服务中(留给工作人员,似乎在谷歌云应用程序引擎上,让他运行而不是阻止微服务。有什么办法我能做到吗?

谷歌提供的示例代码将任务的结果放入有效负载中,但我的情况并非如此,因为由于我的任务的性质,这需要一些时间,我想将其作为后台作业运行,而不是将代码阻塞在部署在Kubernetes集群上的微服务中。

概括一下:

  • 我的microservice1中有一项耗时的任务(比如处理一些数据或发送电子邮件(
  • 当在我的microservice1中达到一个端点时,我将触发处理数据或发送电子邮件的耗时任务
  • 我想将此任务作为后台作业放入正在谷歌云应用程序引擎中运行的谷歌云任务队列中

云任务的目的是托管执行流,而不是后台的非托管执行。

问题是,云任务需要AppEngine,也会导致工作单元被排队。

这是由于AppEngine组件管理排队的每个项的显式调用(执行(,并保证它得到处理。这意味着AppEngine组件将持续监视任务的执行,并将尝试在可用资源上执行请求,直到成功完成为止。

如果您正在寻找一个真正的异步执行,其中请求在后台运行,并且执行流可以在没有活动检查的情况下自由进行,则建议使用Pub/Sub解决方案,因为这允许触发执行,并将使用显式或隐式资源运行所需的时间。Pub/Sub执行的成功/失败将由OP负责在其解决方案中进行管理。

您也可以参考此链接了解更多详细信息。

相关内容

最新更新