2016-11-18 166 views
0

我正在設置一個文件服務器,將被許多客戶端使用。最重要的是,客戶將被定期添加和刪除。我可以並行運行多少個NodeJS Express服務器?

我寫了一個簡單的服務器,使用NodeJS + Express可以做一些簡單的文件處理。當新客戶端被創建時,必要的文件被複制到客戶端的根目錄中。一個nodeJS服務器爲客戶端啓動,它提供一個簡單的Web界面和一個API來從中提取信息。當客戶端完成時,文件被刪除,服務器被關閉。客戶可能會使用它幾個月和幾年,或一次只有幾天。

該系統適用於幾十個用戶,但現在需要擴大規模以處理數百個用戶。

所以我的問題是,這會擴大嗎?一臺功率適中的機器可以處理數百臺Node + Express服務器,還是應該重寫?

回答

3

它應該被重寫,所以你沒有爲每個單獨的用戶服務器。單個nodejs服務器應該能夠處理許多用戶的需求(可能是數千或數萬)。然後,如果超出單個服務器可以處理的規模,則可以部署集羣以使多個nodejs服務器處理成千上萬個用戶的需求。

您可以使用某種經過身份驗證的cookie來識別每個請求屬於哪個用戶,因此,當給定的請求進入時,您知道要對哪個用戶的文件進行操作。

而且,爲了獲得最大的可伸縮性,您的所有文件操作都應該使用異步文件I/O(不同步)。如果您具有CPU密集型的特定文件操作,那麼您可以將這些特定操作移至臨時子進程,以允許主節點服務器繼續支持大量用戶的需求。

所以我的問題是,這會擴大嗎?一臺中等功率的機器可以處理數百臺Node + Express服務器,還是應該重寫 ?

使用異步I/O和羣集來滿足成千上萬用戶的需求,它可以更好地擴展爲幾個nodejs進程。這是nodejs的整體可伸縮性優勢。事件驅動的I/O可以比爲每個用戶提供進程或線程更具可擴展性。

相關問題