【发布时间】:2013-08-13 01:06:02
【问题描述】:
我在 Google App Engine 上有一个应用程序。它处理实时数据而不考虑过去的数据(因此没有数据存储/完全持久性),因此我不需要任何非常可靠的东西来在实例崩溃或新部署的情况下恢复数据。
由于负载的原因,我有多个实例需要共享一个对象列表。我查看了 memcached,但这需要映射样式界面中从键到对象的映射,而不能转储所有条目。
此外,我希望条目可以过期,除非“碰撞”,尽管这可以在用户代码中处理。
什么是不涉及数据存储的合理解决方案?我希望它能够处理来自多个应用程序引擎实例的并发读取和写入(这就是为什么简单的 Java 对象声明不能像每个实例一样工作)。
Memcached 可能会存储单个对象,但它需要获取对象、获取某种锁、修改它并将其写回缓存。
注意现有应用引擎数据存储中存在不相关的数据。
澄清:我需要所有个实体。实体本身可以随时修改、过期或半自动删除或从头开始创建。我不是特别擅长可计费的后端。
编辑:是的,它适用于本地存储的单个列表,但我预计需要多个实例的情况下会出现峰值。尽管我不介意同步延迟,但我至少需要一种尽力而为的方法来获取完整列表。但是,没有后端的所有实例之间的循环通信将相对不可扩展,而且我会更多地陷入租用服务器的场景。
我不在乎更改是否在另一个前端实例上提交更改后没有立即通过。然而,这些变化需要 100% 确定地通过。我只看到 lastSeen 值(long)增加的插入和更新。更新也应该在所有实例上复制或反映。
注意:由于当时我无法控制的情况,我无法授予赏金,因此奖励已退还。我会尽可能重新添加。
【问题讨论】:
-
memcache 好像是它,Memcache 服务中有CAS Compare-And-Set。不给你转储所有实体 - 如果你不需要恢复为什么你需要转储所有实体。后端可能是另一种选择,它维护数据集的内存结构,前端与之对话。
-
@TimHoffman 我需要一个完整的实体列表。我需要向客户展示全部 1000 个左右。我还需要为后端购买额外的配额,对吧?
-
是的,您需要额外的后端配额。
-
@TimHoffman 唉,这就是问题所在。我目前正在免费使用,这是一个个人项目,我不希望通过后端让自己变得更瘦。
-
注意:由于当时的情况,我无法控制奖励,因此奖励已退还。我会尽可能重新添加。
标签: java google-app-engine storage temporary-objects