node.js 作服务器?html
node.js当仁不让,我有赤兔马(异步),手中方天画戟(事件IO)。node
一种too simple ,sometimes naive的感受油然而生。nginx
久经考验的nginx 前置顶住压力,后面多个node服务器完成业务支撑,这样的作法是放心的,是走正道的。服务器
这里要作一个实验:网络
1. 一个nginx做为前台的服务器 2. 所有请求,通过负载均衡,尽量均衡的分步到后面的2台node服务器
首先启动两台node,分别监听3000,3001端口。为了区分,helloworld会带一个端口返回,通知客户端,以便区别是谁在提供服务。负载均衡
$cat 1.js require('http').createServer(function (request, response) { response.end('hello world\n'+process.argv[2]); }).listen(process.argv[2]); $node 1.js 3000 $node 1.js 3001
λ curl localhost:3000 hello world 3000 λ curl localhost:3001 hello world 3001
要点是经过upstream 指令把两个node服务器打成一个服务器池。而后经过location指令,要求所有根目录请求转发到这个池内。池会对它以内的服务器作负载均衡。curl
worker_processes 1; events { worker_connections 1024; } http { upstream node_server_pool { server localhost:3001 max_fails=1; server localhost:3000 max_fails=1; } server{ listen 80; server_name localhost; location / { proxy_pass http://node_server_pool; } } }
我用curl屡次访问nginx服务器,能够经过返回的字符串知道服务器。你看,真的能够负载均衡:一下子helloworld 3000,一下子helloworld 3001。异步
λ curl localhost hello world 3000 λ curl localhost hello world 3001 λ curl localhost hello world 3001 λ curl localhost hello world 3000
你看,ngnix是公平的。哪怕就一个客户的屡次访问都会换着服务器来。oop
node.js成也异步,败也异步,评node.js的异步特性 | 江淼的Blog - http://www.jiangmiao.org/blog/2491.html性能
Node.js + Nginx - What now? - Stack Overflow - http://stackoverflow.com/questions/5009324/node-js-nginx-what-now
为高负载网络优化 Nginx 和 Node.js - 技术翻译 - 开源中国社区 - http://www.oschina.net/translate/optimising-nginx-node-js-and-networki...
让node.js充分利用多核服务器的性能,运用nginx作反向代理和负载均衡 - snoopyxdy的日志 - 网易博客 - http://snoopyxdy.blog.163.com/blog/static/60117440201172954648952/