node.js study: cluster

從v0.6.x開始,Node.js提供了多進程模塊cluster,容許建立一組進程來共享同一個socket,而且分擔負載壓力。
官方文檔是這樣說的:
A single instance of Node.js runs in a single thread. To take advantage of multi-core systems the user will sometimes want to launch a cluster of Node.js processes to handle the load.
The cluster module allows you to easily create child processes that all share server ports.
單個node.js實例的運行是單線程的。用戶有時候想運行一組進程來運行node.js實例以提升多核系統的性能。
cluster模塊讓你輕鬆建立能夠共享服務端口的子進程。
那麼試試先,用cluster共享一個http服務。
cluster-1.js:html

開啓服務:node

http訪問效果:web

顯然,雖然每次http訪問都能獲得結果「hello world」,但卻並非同一個進程。
而且咱們能夠看到cluster實現了的負載均衡,cluster會把請求依次分配給子進程2-3-1-4-2-3-1-4...........這是一個羅賓環。
cluster默認使用round-robin來實現負載均衡。也能夠不使用round-robin。負載均衡

這個時候,http訪問的效果變成了隨機:socket

cluster是如何工做的?性能

cluster的工做進程是經過child_process.fork()來建立的,因此它們與父進程間能夠進行通信。線程

能夠從源碼中找到child_process.fork()的實現。server

源碼片斷:htm

轉載連接:http://helloweb.wang/qianduankaifa/496.htmlblog

相關文章
相關標籤/搜索