我可以使用Node.js的,web.py,CherryPy的,等等?
是。選一個。 Django也很好。
如果使用的話,我需要一個坐在這些部件前面的負載平衡器嗎?
幾乎從不。
我需要多臺機器的這個號碼的用戶,
懷疑。
請記住,每個Web事務都有幾個不同的(幾乎不相關的)部分。
前端(Apache HTTPD或NGINX或類似的)接受初始Web請求。它可以處理服務靜態文件(.CSS,.JS,圖像等),所以你的主要Web應用程序是這樣整潔的。
合理高效的中間件如mod_wsgi可以管理數十個(或數百個)後端進程。
如果你選擇像celery一個聰明的後端處理組件,您應該能夠「真正的工作」分發到最小數量的處理器來完成這項工作。
結果通過mod_wsgi反饋到Apache HTTPD(或NGINX)到用戶的瀏覽器。
現在後端進程(由芹菜管理)與基本Web服務器脫離。您可以通過Apache HTTPD和mod_wsgi和celery實現大量的並行處理,從而可以使用每一處理器資源。此外,您可能能夠將「計算密集型」進程分解爲並行進程 - Unix管道非常高效並利用了所有可用資源。您必須將問題分解爲step1 | step2 | step3
並使芹菜管理這些管道。
您可能會發現這種分解會導致比您原本想象的更大的工作量。
許多Python web框架將用戶的會話信息保存在一個公共數據庫中。這意味着,所有後端都可以 - 無需任何實際工作 - 將用戶的會話從Web服務器移動到Web服務器,從而實現無縫和自動的「負載平衡」。只需擁有大量產生Django(或web.py或其他)的HTTPD/NGINX前端,它們都共享一個公共數據庫。它工作得非常好。
因此,假設我採用基於node.js的方法,但後來決定在處理更多用戶的任務中需要投入更多計算機。我如何擴大規模? – user415614 2010-08-09 23:07:48
通過從執行計算的機器中抽象出實際的服務調用。如果你可以使用node.js來做到這一點,很酷。如果不是,您可能需要選擇不同的機制。 – 2010-08-09 23:08:50