gpt4 book ai didi

java - Google App Engine Datastore,如何处理数据不一致?

转载 作者:行者123 更新时间:2023-12-02 04:51:13 25 4
gpt4 key购买 nike

我正在移植一个简单​​的 CRUD 休息服务,并且我意识到数据存储一致性不是立即的。

目前,我发出 POST 请求来创建实体并获取状态代码 202(因为我知道该实体尚未持久化)。然后一个 GET 请求来获取创建的实体,如果状态是 404,我会 hibernate 两秒,然后继续请求,直到得到 200。

这是处理数据存储最终一致性的可接受的方法吗?我应该进行相同的读取尝试,直到我在服务器端获得实体吗?有替代方案吗?

最佳答案

创建响应 POST 的实体的服务器端 Java 代码可以通过其方法 Key 获取该实体的 .getKey() 。然后,它在 KeyFactory.keyToString 上使用 Key (请参阅 https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/KeyFactory#keyToString(com.google.appengine.api.datastore.Key) )来获取 key 的“网络安全字符串”形式,并将其作为响应的一部分发送给您的客户端。

客户端 GET 然后可以包含该“网络安全字符串”,并且服务器可以使用 Key 再次创建 KeyFactory.stringToKey 对象。

最后但并非最不重要的一点是, datastore.get(key) 实例上的 DataStoreService ,请参阅 https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/DatastoreService ,返回具有强一致性的相应实体 - 遗憾的是,Java 没有明确记录这一事实,但同样适用对于 Python,它清楚地记录在 https://cloud.google.com/developers/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/#h.tf76fya5nqk8 ...

因此,通过正确地跳基于调的小步舞曲,您应该没问题,而无需在 404 上重试并等待!-)

关于java - Google App Engine Datastore,如何处理数据不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29218951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com