簡體   English   中英

在所有實例上的Appengine上存儲對象列表

[英]Storing a list of objects on appengine across all instances

我在Google App Engine上有一個應用程序。 它可以處理實時數據,而無需考慮過去的數據(因此不需要數據存儲/完全持久性),因此,在實例崩潰或新部署的情況下,我不需要任何非常可靠的方法來恢復數據。

由於負載,我有多個實例,它們需要共享一個對象列表。 我調查了memcached,但這需要在映射樣式的界面中從鍵到對象的映射,而不能轉儲所有條目。

另外,我希望使這些條目有效,除非“顛簸”,盡管可以在用戶代碼中處理。

什么不涉及數據存儲的合理解決方案? 我希望它能夠處理來自多個App Engine實例的並發讀寫(這就是為什么簡單的Java對象聲明無法按實例運行的原因)。

Memcached可能存儲單個對象,但是需要獲取該對象,獲取某種鎖,對其進行修改並將其寫回到緩存中。

注意:永久的App Engine數據存儲中沒有不相關的數據。

澄清:我需要所有實體。 實體本身可以隨時修改,可以通過過期或半自動刪除,也可以從頭開始創建。 我不是特別有能力前往可計費的后端。

編輯:是的,它將與本地存儲的單個列表一起使用,但是我希望需要多個實例的地方會出現峰值。 我至少需要盡力而為的方法來獲取完整列表,盡管我不介意延遲同步。 但是,在沒有后端的情況下,所有實例之間的循環通信將相對不可擴展,而我將更多地局限於那里的“服務器租用”方案。

我不在乎更改是否不能在另一個前端實例上提交更改后立即通過。 但是,這些更改需要使其具有100%的確定性。 我只看到增加lastSeen值(長整數)的插入和更新。 更新也應復制或反映在所有實例上。

注意:由於當時我無法控制,我無法授予賞金,因此退還了賞金。 如有可能,我會重新添加。

這里的數據存儲有什么問題?

如果您擔心在數據庫中有很多項目會花費太多,那么只需將每個項目保存在帶有datetime_created字段的auto_now_add=True (或Java等效項;我來自Python)中,然后安排cron通過刪除舊的東西嗎?

據我所知,該數據存儲區應該可用於並發讀寫。

您可能還考慮僅退出AppEngine。 Redis聽起來像是您所描述的工作的正確工具,並且AWS上的Elastic Beanstalk可能在那里很好地滿足了您的需求。 當然,要進行設置會付出更多的努力,但是可能不會壓倒性的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM