2015-06-23 25 views
1

我想有一段時間(1)永久循環與設備[TCP]並行通信。想法是爲每個IP地址[TCP連接]啓動線程並讓它們永遠通信。目前設備我要支持的數目爲200+ 問題是2015年NodeJS和線程

  1. 的NodeJS如何實現而(1)的策略和作爲其基於事件如何來衡量超時而響應定時。

  2. NodeJS將能夠處理200多個線程?我已經在Windows應用程序之前這樣做,一切正常我有一個服務器級的機器[16個內核]

  3. 的最佳做法建議

  4. 我應該只是保持到的NodeJS處理網絡流量和移動通信服務器[TCP和線程]代碼以某種導航語言?

+0

線程和'而(真)'循環是非常罕見的在node.js中的答案Node.js的目的不是通過線程來處理併發連接,而​​是通過基於異步事件的操作來實現。 它通常能夠在單個內核上處理數千個併發連接(http://www.infoq.com/interviews/node-ryan-dahl) –

回答

2

如果你認爲一個while循環這裏的關鍵是你認真誤解Node.js的事件循環模式。這完全不相關。已經有一個強大的事件調度系統內置,沒有必要建立自己的最重要的。

Node.js能處理線程嗎?有點。不是真的。如果您有需要線程處理的CPU密集型任務,您應該查看webworkers,但多進程模型是傳統上由Node推動的模型。

切記:節點全是關於非阻塞異步操作,所以線程不會幫你。這不像Java那裏你會有成千上萬的線程阻塞調用。您不會創建線程來處理每個連接,只需編寫異步代碼以在同一個線程上處理它們。

您應該嘗試模塊化您的解決方案。任何沉重的東西都應該包含在可以使用像RabbitMQ這樣的事件總線進行調度的任務中,以便管理工作流程。