這是更多的設計問題,而不是實現,但我有點想知道我是否可以設計這樣的東西。我有一個交互式應用程序(類似於python shell)。我想託管一個服務器(可以說使用node.js http服務器或socket.io,因爲我不確定哪一個會更好),它會爲每個連接到它的客戶端產生一個新的child_process併爲其維護一個不同的上下文那個特定的客戶。對於node.js或socket.io,我是一個完整的noob。我管理的最大值是在socket.io服務器上有一個子進程,並將客戶端連接到它。 所以問題是,這會工作嗎?如果沒有,節點上是否有其他方式讓它起作用,還是使用本地服務器更好? 謝謝多個child_process與node.js/socket.io
0
A
回答
2
Node.js - 是單進程的web平臺。使用集羣(child_process),您將使用單獨的線程創建相同應用程序的獨立執行。
每個線程花費內存,這通常是爲什麼大多數傳統系統沒有太大的可擴展性,因爲每個客戶端都需要線程。對於節點來說,從硬件資源的角度來看,它將非常低效。
節點是基於事件的,你不需要擔心太多的範圍,只要你的應用程序邏輯沒有利用它。
建議工人數量與硬件上的CPU內核數量相等。
總是有一個主應用程序,它會創建工人。每個工作人員將創建http + socket.io監聽器,這些偵聽器技術上將綁定到主套接字並從那裏發送。 http請求將被路由到不同的工作人員,而套接字將在連接時被路由,但是那個工作人員將處理這個套接字直到它斷開連接。
相關問題
- 1. 節點j上的多個child_process exec
- 2. 打開的文件太多使用child_process
- 3. Complexe child_process不能與Promise藍鳥
- 4. Node.js readline與交互式child_process產卵
- 5. STDOUT抑制方法與節點child_process
- 6. nodejs + shell(expect)+ child_process
- 7. 檢索child_process
- 8. child_process流反壓
- 9. 調用child_process從
- 10. Process.nextTick或child_process?
- 11. keystoneJS as child_process
- 12. 錯誤處理ExpressJS中的中間件以產生多個child_process
- 13. 'child_process'.exec vs .spawn ENOENT
- 14. node.js child_process does not working
- 15. 如何確保兩個或多個節點進程(child_process)中的同步邏輯?
- 16. Nodejs child_process spawn自定義stdio
- 17. 進程替換 - Node.js child_process
- 18. 'fork_ed'的守護進程'child_process'
- 19. 的NodeJS child_process只得到空
- 20. NPM安裝child_process不工作
- 21. 檢索node.js的結果child_process
- 22. node.js child_process spawn忽略等號
- 23. 異步函數vs child_process
- 24. Nodejs child_process執行shell命令
- 25. 運行主進程爲child_process
- 26. 節點child_process沒有在Mac上執行更多的一個命令,但與Windows正常工作
- 27. ssh與nodejs child_process,服務器上找不到命令
- 28. NodeJS與Child_Process - 如何逃脫我的命令
- 29. 如何在webpack中使用child_process
- 30. 在node.js中的child_process模塊中
非常感謝Maksims ..所以如果子進程需要大量內存,除非我們有另一臺服務器進行負載平衡,否則將難以擴展。 – ssarangi
負載平衡將通過所有工作人員沒有任何問題發生。而且每個工作人員都能夠在相對較好的硬件上處理數千個連接。如果你仍然需要,你可以創建CPUCores * 4工作者,例如4核心,16名工人。然後它們將被分散在Cores上,並且不會有大的內存開銷。但不是每個連接的工作人員。 節點與經典的阻塞平臺有很大的不同,並且Node可以非常有效地在一個線程上處理很多連接。 – moka