GAE 的现有持久性框架,如Objectify、Datanucleus、Twig等,如何处理数据存储的“最终一致”性质?
我正在使用DatastoreService
层中的数据存储(我现在没有使用这样的持久性框架)。
在我的单元测试期间,我有时会得到正确的对象计数,有时不会。这是预期的。
这是我的 JUnit 助手配置:
private final LocalServiceTestHelper helper =
new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig()
.setDefaultHighRepJobPolicyUnappliedJobPercentage(50));
现在,即使我已将 put/get 方法放置在重试的 do-while 循环中(重试次数为 4),它仍然会错过 put/get 实体。
那么现在,对于那些指定的框架,他们是否能够保证如果我放置 3 个对象,我将得到 3 个对象?如果是这样,它是如何实施的?
我唯一能想到的就是使用 Memcache,也就是说,我的方法会首先尝试从中获取实体,如果它错过了,它会检查数据存储区。这是一种合理的方法,还是有更好的方法或正确的方法?