2010-01-31 45 views
1

我有點困惑。我編寫了一個Java獨立應用程序,現在我想使用GAE到 將它部署到網絡上,並且還可以學習GAE。 在我的應用程序中,我從文件中讀取數據,將其存儲在內存中,處理它,然後將結果存儲在內存或文件中。 我知道現在我需要將結果存儲在GAE的數據存儲中,這很好。因此,我可以在計算機上獨立運行我的程序,然後將結果寫入文件,然後使用GAE將所有結果上載到數據存儲,然後用戶可以查詢它。但是,有沒有辦法可以將整個過程轉移到GAE應用程序中?因此應用程序會從文件讀取數據,執行處理(使用應用程序服務器上的存儲器而不是我的計算機 - 至少需要4GB的RAM),然後在完成時(可能需要1-2小時),將所有內容寫入GAE數據存儲? (所以這是一個內部的「離線」過程,沒有用戶參與)。Google App Engine中的內存使用情況

我有點困惑,因爲Google沒有提及任何關於內存配額的內容。

謝謝!

回答

8

您將無法按照您的設想進行離線處理。您的應用可以使用多少內存是有限制的,但這不是主要問題。應用程序引擎中的所有處理均在請求處理程序中完成。換句話說,您希望應用程序執行的任何操作都將被寫入,就好像它正在處理Web請求一樣。這些處理程序中的每一個都限制在30秒的運行時間內。如果您的流程嘗試運行更長時間,它將被關閉。 App引擎針對Web請求進行了優化,而不是進行繁重的計算。所有這些說法,你可能能夠將計算任務分解成30秒的塊,並將中間結果存儲在數據存儲或memcache中。在這種情況下,您可以使用cron作業或任務隊列(均在應用程序引擎文檔中描述)在調用數據處理完成之前一直調用處理處理程序。

總之,是的,它可能做到你想做的,但它可能不值得麻煩。如果你想做計算密集型的事情,可以考慮其他的雲解決方案,比如亞馬遜的EC2或者Hadoop。

+0

這解釋了一些事情。非常感謝! 順便說一句 - 我更喜歡GAE,因爲它對我的需求是免費的。雖然從我的理解,亞馬遜從一開始就收取您的費用。我也考慮過Hadoop,Amazon + Hadoop可能是一個很好的解決方案,但Hadoop本身並不能幫助我,因爲它只是一個軟件,我仍然需要基礎架構。但是現在,Hadoop不在我的優先級列表中,因爲計算時間不是一個大問題。 我認爲我會在計算機上離線計算,將所有結果保存爲CSV文件,然後將它們上傳到GAE數據存儲區。 – user247866 2010-01-31 22:14:26

+0

你應該嘗試stax.net我現在使用它,這很好 – Roch 2010-02-01 15:35:33

+0

@mnml - 海報想要一個免費的解決方案。 stax.net沒有列出價格,也沒有提到他們在beta版之後會有免費的選擇。 – 2010-02-01 16:50:18