我在使用Google App Engine嘗試確保聚合分片實體時具有很強的穩定性方面存在問題。我原本是在這樣的假設下,批次通過密鑰「獲取」確保讀取是最新的,但是之後得知這是不正確的。現在我很困惑我如何能夠實現強大的恆定性。Google應用引擎着色一致性
下面是我想要做的: 我正在構建一個用戶投票投票的「遊戲」。投票速度很快(每用戶分鐘大約一次),所以我相信有必要使用陰影技術來確保用戶在寫投票時不會受到瓶頸。當用戶進行投票時,會讀取一個投票實體以確保投票仍在運行,然後假設向投票片段寫入投票成功,用戶應該收到投票已計數的通知(在返回的頁面上)。投票結束後,碎片被組合並且基於每個用戶的投票完成計算;然後顯示結果。
在分片聚合過程中實際看到用戶的投票已收到確認,這一點很重要。如果服務器拒絕用戶的投票(尤其是在輪詢結束時),但他們應該收到失敗通知。我很擔心GAE的最終一致性保證可能會出現一些情況(只使用基本着色),在這種情況下用戶可以成功地將他們的投票寫入分片(並獲得成功通知),但累加器尚未看到更新,不計算最終帳戶中的用戶投票。
它可以防止這種情況?我甚至需要在實踐中擔心這一點?
謝謝!
你說**我最初是在假設批次「通過密鑰獲取」確保讀取是最新的,但後來知道這是不正確的。**什麼使你相信這一點。通過Key獲取是一致的,不使用祖先的查詢將不一致。 –
你可以展示你如何發佈你的get操作的代碼嗎?也許他們實際上並沒有通過關鍵操作獲得(這應該是一致的)。 – dragonx