是否有App Engine共享内​​存或等效解决方案?

时间:2012-01-30 16:54:11

标签: google-app-engine

我正在构建一个需要加密密钥才能运行的GAE应用。我想避免将密钥存储在代码或持久性数据存储区中,而是每当我启动应用程序时上传密钥,以便它在应用程序的生命周期内(仅从我开始)时才会驻留在内存中上传密钥,直到没有实例运行。)

我知道这可能与驻留后端有关,但这似乎太昂贵(最便宜的后端目前为58美元/月)只是为了在内存中保留一个值并按需将其提供给其他实例。

请注意,我并不是在寻找一个通用的强大共享内存解决方案,只需要一个基本上写入一次且多次读取的值。感谢。

2 个答案:

答案 0 :(得分:4)

我认为这不会像你希望的那样发挥作用。 GAE中的数据来源:

  1. 使用您的应用部署的文件(战争或其他)。
  2. 每个实例内存(前端或后端)。
  3. 内存缓存。
  4. 数据存储区(或者我现在的SQL)。
  5. Blob存储区。
  6. 通过http请求检索的信息(即将其存储在其他地方)。
  7. 根据你的问题,

    1和4出局了。 2本身不起作用,因为实例的启动和停止不受你的控制(否则不会扩展),而持久化实例很昂贵。 3本身不起作用,因为Memcache可以随时清除。 5实际上与数据存储区没有什么不同,因为它永久存储在Google的服务器上。也许您可以尝试6(将其存储在其他地方),并在实例启动期间将其检索到每个实例的内存中。但我怀疑安全方面没有更好的安全性(并且,就此而言,与您所说的内容不符)。

答案 1 :(得分:0)

如果您:

,似乎Memcache和本地内存解决方案可能会起作用
  1. 让您的服务器实例在退出时清除memcached密钥和
  2. 现有服务器实例定期写入/刷新密钥(for 每个请求都有例子。
  3. 这样,只要一个实例正在运行,并且很可能在冷启动时就不存在,那么密钥可能会存在。

    在密钥更改的情况下,也可以使用相同的机制传播新的密钥和/或循环服务器实例。