簡體   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