【发布时间】:2016-11-30 20:33:02
【问题描述】:
有没有办法向 Google App Engine 中模块/服务的所有活动实例发送请求?
如果我可以获得所有活动实例 ID 的列表,我可以为每个实例发出类似 https://instance-dot-version-dot-service-dot-app-id.appspot.com 的请求。
在非常不寻常的情况下,我需要它来更改一些内存的全局变量(这可以节省我对数据存储或内存缓存的请求和时间)。如果它们是频繁更改,我显然更喜欢使用 memcache...
【问题讨论】:
-
虽然 Dan 发布了答案,但我不确定这是否真的是您需要实现的最佳方法。您认为您可以进一步详细说明吗?
-
您可以在实例的 RAM 内存中、MEMCACHE 或 DATASTORE(或其他 NSQL)中拥有一个标志。获取该标志值的时间可能是 0.001、2 或 50 毫秒(示例),具体取决于所选存储。如果我的应用程序的所有请求都读取了该标志,那么从实例的 RAM 内存中读取它可以节省金钱和时间(假设 10 M 请求/天并计算数字)。当实例启动时,您从 Datastore 中读取值并将其作为全局变量放入 RAM。但是如果标志发生变化,我正在寻找一种方法向所有实例发送消息以更新其 RAM 中标志的值。
-
在我之前的示例中,该标志只能每月更改一次,或者在某些 Google 服务失败的情况下(如 GAE 任务队列),但在这种情况下,我们需要一个中间传播。当前的解决方案是刷新内存缓存并再次上传应用程序的最后一个版本,因此所有实例都被初始化并使用新的标志值重新启动......我正在寻找一种更优雅的方式来做到这一点。我需要它用于自动缩放实例。