2010-04-01 67 views
0

我對GAE不滿意,因爲 - 一個不能有全局變量和'synchronize'關鍵字。相反,人們必須捕捉到一個基本的DB transcational異常,並在一個while循環中重試 - 這將消耗我所有的空閒CPU時間,並在我到達谷歌的qouata時開始花費我的錢。從GAE移植到TomCat或另一個servlet服務器

  1. 在tomcat中使用doPost()內同步安全嗎? (我猜,只要所有的servlet都在1個虛擬機上運行,​​就可以了)。如果不是所有的tomcat配置,我如何配置tomcat使其安全?

如何將GAE應用程序轉換爲我自己的tomcat服務器? - 如何在tomcat上安裝DataNucleus Access Platform?

致以問候

+0

該要求沒有意義。你的問題在別的地方。請詳細說明這個問題。 – BalusC 2010-04-01 12:10:47

+0

啊我已經看到了,你發佈了幾個有關該主題的相似/相關問題,例如這裏:http://stackoverflow.com/questions/2556644/google-app-engine-atomic-section發佈的答案是非常好的。再想一次。 – BalusC 2010-04-01 12:12:21

回答

2

App Engine基本上是一個分佈式系統。你不能使用同步原語,因爲你的應用程序將運行在多臺虛擬機和多臺機器上。依靠在單個虛擬機上運行將極大地限制應用程序的可伸縮性。

你爲什麼要這樣做?幾乎肯定有一種方法可以在不鎖定的情況下實現它。

+0

感謝您的詢問。說一個用戶正在尋求最合適的免費資源。我們需要同步它,這樣兩個用戶將不會被分配到相同的資源。 我知道我們可以使用數據庫事務,如果拋出異常,然後我們檢索一個循環,但這種解決方案浪費了CPU和數據庫。這就像沒有使用睡眠命令,而是循環,因爲沒有任何東西會減慢CPU時間... – bach 2010-04-01 10:27:23

+0

只是假設算法尋找最合適的算法是昂貴的 - 那麼問題更具體 – bach 2010-04-01 10:37:19

+1

正如我已經說過,它只有'循環'如果有衝突。絕大多數時候不會有爭用,所以它會在第一時間罰款。正如其他人所說的那樣,當爭用率較低時,樂觀併發是一種常見且有效的方法。 – 2010-04-01 11:03:17

相關問題