2010-01-04 72 views

回答

4

這真的取決於你使用的數據訪問機制很多。如果你有一個非常可伸縮的數據訪問和大量的線程,使用某種形式的線程靜態數據訪問可能是有利的。

如果您沒有可擴展的數據訪問權限,您的提供程序不支持每個進程的多個線程,或者您不需要此時的可伸縮性,那麼使用具有適當同步的單例更簡單,更易於實現。

對於大多數商務風格的應用程序,我個人認爲單的做法是更容易維護,可能會更好 - 如果沒有其他原因,而不是它是非常非常容易有效地進行測試。擁有多個數據訪問線程可能不是必需的,因爲數據訪問可能不會成爲影響可用性的瓶頸(如果設計正確,並且批量請求適當)。

+0

吾道的,實際上是連接到兩個來源:通過RPC的SimpleDB和PHP API。我的猜測是我應該使用DAO每線程約100個線程來避免瓶頸問題。在這種情況下你有沒有看到任何明顯的原因? – pondermatic 2010-01-05 00:12:18

+0

可能更好地使DAO成爲單例,並且在內部只是異步工作。然後可以根據需要使用ThreadPool進行擴展......這對於PHP API尤其如此,因爲Web請求非常異步地工作,並且大多數Web框架對此有很好的支持...... – 2010-01-05 00:41:59

0

使用最適合你的應用程序架構,辦法,除非:

1)數據訪問對象是昂貴的創建,在這種情況下,你應該向着一個線程安全的單瘦。

2)你的對象保持可變的狀態,如Active Record pattern。 (不可變的DAO配置狀態,如超時閾值,不計。)