2013-01-09 93 views
0

我有一個服務在本地服務器上運行,使用Python threading庫編寫。把它想象成一種網絡爬蟲。它使用50個線程。我想將它部署在Amazon Web Services雲上並將其擴展,因此它使用更多的線程。AWS和Python線程可伸縮性

簡單地說,我有兩個queuesQinput與網址和Qoutput與網頁內容。線程從Qinput中挑選URL,將網頁的內容提取到Qoutput

問題:僅僅將線程數增加到500,5000或50,000就足夠了,AWS + Python將處理它?我應該期望服務能夠無縫運行,還是有一些「標準」設計陷阱,我應該知道在AWS上移植多線程服務時應該注意些什麼?

我知道Global Interpreter Lock雖然它不應該在這裏的一個問題,因爲線程的主要任務是在檢索/刮頁

+0

你可以看到http://stackoverflow.com/questions/12996254/what-are-the-advantages-of-multithreaded-programming-in-python我該如何理解線程的增加並沒有直接關係的表現。 – Denis

回答

3

任何單個實例都有限制解釋外打電話。你可能會在你的實例中產生相當多的線程,特別是如果你choose the larger ones。但是你會在額外的線程上獲得減少的回報,直到它不能幫助你獲得更多的性能。

但是,如果你希望你的系統擴展到超過一個單一實例的限制,最好是能夠在多個實例運行系統。那麼你的決定只是可操作的而不是技術性的。我認爲,如果您在AWS環境中運行,這會讓您幾乎擁有無盡的運營資源,您應該考慮一下。

您也可以查看SQS,這基本上是一個分佈式隊列系統。它將允許您根據需要同步多個實例的工作。