我正在使用Google App Engine作爲剛剛發佈的iOS遊戲的後端。Google App Engine和具有多個實例的數據複製
通過玩遊戲的行爲,玩家創建關卡,然後與朋友和整個世界共享。 GAE用於存儲和檢索這些級別。 GAE還管理玩家的高分,因爲他們比Game Center更復雜。
作爲一個整體,GAE工作得很好。我喜歡GAE如何根據需要旋轉新實例,而無需持續監控負載。對於這個遊戲,GAE正在運行10個實例,每秒鐘處理大約8次查詢。
但有一個小問題。
我注意到有時玩家會在高分榜上兩次。這應該是不可能的,因爲我在提出新分數之前刪除任何舊分數(這是在對GAE的一個查詢中完成的)。
經過一番測試後,似乎發生的事情是玩家會得到高分,實例1處理刪除舊分數和添加新分數。然後玩家獲得一個新的高分,但這次實例4是處理請求的實例,它不知道另一個分數。
以最快的速度,可能需要玩家10秒才能獲得新的高分。我的理解是數據的複製只需要2到3秒鐘。
我從來沒有在測試過程中看到這個問題,因爲加載很少導致2個實例啓動。
這似乎是一個合理的解釋發生了什麼以及如何爲每個實例存儲數據?
有沒有辦法保證在一個實例中添加,刪除或更改的數據在另一個實例中可用?高分不是「關鍵任務」,所以我並不太擔心,但我想用GAE來處理一些更復雜的情況,這些情況非常重要,數據是一致的。
GAE可能嗎?或者我應該考慮其他解決方案嗎?
感謝您的鏈接。這聽起來像我所看到的或正常的和預期的。我可能不得不爲未來的需求尋找更強大的解決方案。 –