【问题标题】:Run services without an HTTP endpoint在没有 HTTP 端点的情况下运行服务
【发布时间】:2020-09-07 13:58:36
【问题描述】:

我们有一些服务只监听 Rabbit MQ 队列,而这些服务没有 HTTP 端点。是否计划可以在 GCP Cloud Run 中运行此类服务?

我们不想将队列更改为 GCP Pub/Sub。我们只是想要一个容器始终使用 1 个 CPU 和 1 GB RAM 运行。如果我们现在在队列中启动服务并且没有收到任何 HTTP 请求,那么 GCP 会将分配的资源扩展到几乎为零,因此服务无法执行任何工作。

【问题讨论】:

  • 如果没有监听器,消息会发生什么。它们是否保存在 RabbitMQ 中?
  • 是的,消息保存在 Rabbit MQ 中。但是我们需要它们被我们的服务消费和执行。

标签: google-cloud-platform google-cloud-run


【解决方案1】:

所以,我已经做了一个 Cloud Run 服务,它获取 HTTP 请求,运行 RabbitMQ 侦听器并在 14 分钟和 50 秒后停止它并回答 HTTP CODE 200(我将 CLoud Run 超时设置为 15 分钟)。

然后,我配置了一个 Cloud Scheduler,没有重试策略,每 15 分钟调用一次我的服务。

这是一种解决方法,但我无法提出托管、按需付费和伪全职的建议!

注意:Cloud Run 超时将很快延长至 3600s (1H)

编辑

看看 App Engine Flex。它是无服务器的,可扩展到 1,并且每周至少重新启动一次以更新底层服务器。你谈到了 Cloud Run,我很关注它!

您可以在其上运行容器(自定义运行时)。与 Cloud Run 相同,但也略有不同。例如,在容器启动时,开始监听你的 RabbitMQ,Kibana 处理 API 请求

那么,试一试吧!

【讨论】:

  • 听起来很酷。我们会试试的,谢谢!但是...我希望 Google Cloud Run 团队经理能够回答这个关于持续性能的问题 :-)
  • 通过持续性能选项,我们还可以在 Cloud Run 中运行 Kibana 和类似的服务。那里的服务做一些后台计算,但也是一个网络服务
  • Cloud Run 指标已集成到 Stackdriver。但是,是的,您也可以在后台运行其他应用程序。只有一个约束:您只能在外部公开 1 个端口
  • 啊,是的。我的意思是 Grafana - 我们喜欢这个工具。我了解到其他托管在 Cloud Run 中的问题。
  • 谢谢!我不知道 App Engine Flex。然后,您会将其与 Cloud Run 混合使用吗?用于 HTTP 服务的 Cloud Run 和用于后台服务的 App Engine?
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 2012-06-19
  • 2012-04-15
  • 2016-06-22
  • 2017-08-18
  • 2021-12-28
  • 2013-12-31
  • 2014-06-13
相关资源
最近更新 更多