2011-09-21 59 views
2

我正在寬鬆地考慮將Google App Engine用於某些Java服務器託管,但是在閱讀某些文檔時,我遇到了似乎有點問題。我寫過的大多數服務器,當然也是我心目中的服務器,都需要某種形式的基於內存的存儲,這些存儲在會話之間仍然存在,但是GAE似乎沒有提供這種機制。在Google App Engine中共享基於內存的數據

  • 的數據可以存儲爲靜態對象,但一個應用程序可使用多個服務器和數據不能在服務器之間共享。

  • 有memcache,它是共享的,但因爲這是一個緩存它不可靠。

  • 這隻留下數據存儲,它可以完美工作,但速度太慢。

我實際需要的是一個高性能(即基於內存的)存儲,可以訪問所有客戶端請求並且一致。在這種情況下,它提供了位於數據存儲前面的專用鎖定和同步機制。

在我看來,這裏的功能有很大的差距。或者我錯過了什麼?

任何想法或建議嗎?

+0

您要求的內容在可伸縮系統中並不存在。任何不至少與磁盤搜索一樣長的事情是不可靠的 - 所以你的選擇是像memcache一樣快速和不可靠,或者像數據存儲一樣慢而且可靠。但是,爲什麼數據存儲庫存儲會話數據的速度太慢? –

+0

是的,你說的沒錯,這在可伸縮系統中並不存在,但實際上它是由「後端」(見下文)提供的,這正是我所需要的。我開發了專有的持久層,可能涉及在每個查詢上存儲數百或數千個數據對象的鎖定信息。雖然使用基於內存的解決方案這是完全可行的,但將此數據寫入數據存儲的速度太慢。 – chris

+0

爲什麼你需要鎖定?如果您告訴我們更多關於您想要實現的目標,也許我們可以提出其他選擇。 –

回答

3

靜態數據(與您的應用程序一起上傳的數據)對所有實例都是可見的,只讀的。

要在實例之間共享數據,請使用數據存儲。在低延遲很重要的地方,緩存在內存緩存中。這些是基本選項。讀出數據存儲非常快,這只是需要關注的寫入操作,可以通過確保不需要查詢的任何實體屬性爲未編制索引來緩解這些問題。

如果它適合您的預算,另一種選擇是在永遠在線的後端服務器上運行自己的緩存。

+0

好的,謝謝,你已經回答了我的問題與後端部分。後端正是我正在尋找的東西。然而,最便宜後端的成本快速計算似乎在60美元/月左右,這不幸有點貴。 – chris

+0

@chris你說比較昂貴時,你用什麼比較?只是好奇你正在考慮的其他選項。 –

相關問題