【发布时间】:2023-03-09 17:38:01
【问题描述】:
我们为一个 API 运行了多个 Google Cloud Run 服务。有一个父服务和多个子服务。当父服务启动时,它会从所有子服务加载架构。
目前没有办法告诉父进程重新加载架构,因此当部署新子进程时,需要重新启动父服务以重新加载架构。
我们知道有 1 个或多个 Google Cloud Run 实例正在运行,并且有处理此问题的想法,但想知道是否有办法重新启动父进程。没有办法实现它,一个或多个现在是无关紧要的。找到它的唯一方法是部署似乎有点矫枉过正的父级。
在谷歌云中运行的容器是带有 Nodejs 的 Alpine Linux,运行一个快速的应用程序/中间件。我可以停止节点应用程序的运行,但不能重新启动它。如果我停止该服务,Google Cloud Run 可能仍会继续向该实例提供流量,从而导致错误。
也许我可以停止快速服务,以便 Google Cloud run 替换该实例?这是一种可能吗?是否有一种优雅的方式来做到这一点,以便它首先尝试完成和当前的请求(而不是简单地杀死 express)?
寻找任何方法来强制 Google Cloud Run 重新启动或启动新实例。想法?
【问题讨论】:
-
子服务是否在同一个容器中运行(如本图gist.githubusercontent.com/igponce/…)?
-
如果架构文件对于运行服务至关重要,您可能需要将其包含在运行服务的容器中。可能会在文件更改时为他们触发云构建,然后重新部署云运行服务。
-
感谢您的想法。架构在子项之间是动态的,不属于容器。
-
不,每个孩子在自己的容器中作为单独的微服务运行
标签: node.js express google-cloud-run