【发布时间】:2017-03-13 21:52:28
【问题描述】:
我想向当前为特定 App Engine 应用程序运行的每个(动态/自动缩放)实例发送特定 HTTP 请求(或以其他方式传达消息)。
我的目标是触发每个实例丢弃一些本地缓存的数据(因为我刚刚修改了底层数据并希望它们重新加载它)。
一种可能的解决方案是在 Memcache 中存储一个值,并让实例在每次处理请求时检查此值,以查看是否应该刷新缓存。但这会增加每个请求的延迟。
另一种可能的解决方案是以某种方式停止所有正在运行的实例。没有固定开销,但在实例重启时会产生一些影响。
一个更不理想的解决方案是重新部署应用程序代码以停止所有实例。由于部署需要一些时间,现在这会增加我的延迟。
【问题讨论】:
-
我认为目前没有任何 API 可以这样做,但您可以在 memcache 启动时将每个 API 附加到一个列表中,这样您就可以跟踪它们。
-
你好,请看下面的文档,主题是如何调用专用实例cloud.google.com/appengine/docs/standard/java/…
-
Technomage - 正如另一条评论中提到的,看起来自动缩放实例没有调用关闭挂钩,所以虽然我可以让它们在启动时注册自己,但我目前有当他们关闭时,他们无法取消注册。 Michael - 这些是动态(自动缩放)实例,因此我认为基于 URL 的路由无法处理特定实例。
-
@CAW 不是直接的答案,但谷歌 REST API 可以列出正在运行的实例并让您停止它们。为了减少预热时间,您可以引入预热请求(不确定它们是否适用于自动扩展)和/或逐渐关闭它们。