我正在寬鬆地考慮將Google App Engine用於某些Java服務器託管,但是在閱讀某些文檔時,我遇到了似乎有點問題。我寫過的大多數服務器,當然也是我心目中的服務器,都需要某種形式的基於內存的存儲,這些存儲在會話之間仍然存在,但是GAE似乎沒有提供這種機制。在Google App Engine中共享基於內存的數據
的數據可以存儲爲靜態對象,但一個應用程序可使用多個服務器和數據不能在服務器之間共享。
有memcache,它是共享的,但因爲這是一個緩存它不可靠。
這隻留下數據存儲,它可以完美工作,但速度太慢。
我實際需要的是一個高性能(即基於內存的)存儲,可以訪問所有客戶端請求並且一致。在這種情況下,它提供了位於數據存儲前面的專用鎖定和同步機制。
在我看來,這裏的功能有很大的差距。或者我錯過了什麼?
任何想法或建議嗎?
您要求的內容在可伸縮系統中並不存在。任何不至少與磁盤搜索一樣長的事情是不可靠的 - 所以你的選擇是像memcache一樣快速和不可靠,或者像數據存儲一樣慢而且可靠。但是,爲什麼數據存儲庫存儲會話數據的速度太慢? –
是的,你說的沒錯,這在可伸縮系統中並不存在,但實際上它是由「後端」(見下文)提供的,這正是我所需要的。我開發了專有的持久層,可能涉及在每個查詢上存儲數百或數千個數據對象的鎖定信息。雖然使用基於內存的解決方案這是完全可行的,但將此數據寫入數據存儲的速度太慢。 – chris
爲什麼你需要鎖定?如果您告訴我們更多關於您想要實現的目標,也許我們可以提出其他選擇。 –