繁体   English   中英

Google Cloud端点与Android - 缓存响应?

[英]Google Cloud Endpoints with Android - Caching response?

我使用Google Cloud Endpoints (Java)作为Android应用的后端。 后端上的数据存储在数据存储区中

问题是Android客户端通常无法从后端接收正确的数据。 重复请求后,最终会收到正确的数据。

你能告诉我什么可能导致这个问题吗? Cloud Endpoints库中是否存在某种响应缓存? 或者在Datastore中缓存?

我已经阅读过Datastore提供的最终一致性 ,因此我尝试在下一次查询请求之前更新实体后至少等待10秒。 够了吗?

非常感谢。

直接从构造数据以获得强一致性的文档:如果始终要求数据存储区查询的结果保持一致,则需要根据文章中的示例代码使用祖先查询:

Query query = new Query("Greeting", guestbookKey).setAncestor(guestbookKey);

您不能依赖延迟来获得一致性,因为它依赖于跨数据中心的复制,并且这需要的时间永远不会是一致的:)

听起来好像您构建数据模型的方式不符合您希望使用数据模型的方式。 如果没有看到您的数据模型的示例,我无法向您提供有关如何更改它的提示,但这是一个可能对您有所帮助的简单示例。

假设我有一个“Post”实体和一个“CommentForPost”实体。 用户可以为每个Post条目创建许多CommentForPost条目。 从逻辑上讲,CommentForPost是Post的子项,但是如果不使Post成为所有CommentForPost条目的祖先,则无法保证立即一致性。 如果用户A创建了评论然后查询,他们可能不会立即看到该条目。

另一方面,如果将Post实体作为所有CommentForPost条目的父级,那么您将保证立即一致性,因为它们被保存为单个EntityGroup。 如果用户A创建了一个条目并立即查询它(使用Post键作为祖先),那么他们肯定会得到准确的数据。

这里的限制是您每秒只能创建一个CommentForPost条目。 这是给予和接受的地方。 如果您需要在短时间内进行大量更新,则无法保证一致性(例如,100个用户同时添加了CommentForPost条目)。 如果您想保证一致性,那么您将无法在短时间内获得大量更新。

说得通?

暂无
暂无

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

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