繁体   English   中英

Google App Engine数据存储区,如何处理数据不一致?

[英]Google App Engine Datastore, how to deal with data inconsistency?

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

目前,我发出POST请求以创建实体并获取状态代码202(因为我知道该实体尚未持久)。 然后是GET请求以获取创建的实体,如果状态为404,我会在两秒钟内进入睡眠状态,然后一直请求直到获得200为止。

这是处理数据存储最终一致性的可接受方法吗? 在将实体放入服务器端之前,是否应该进行相同的读取尝试? 还有其他选择吗?

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

然后,客户端GET可以包含该“ we​​bsafe字符串”,服务器可以使用KeyFactory.stringToKey再次创建Key对象。

最后但并非最不重要的,一个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最终与Google云数据存储区保持一致/#h.tf76fya5nqk8 ...

因此,通过适当地跳舞基于键的小尖峰,您无需再对404进行重试就可以了!-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM