从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