负载均衡
对于最简单的网站,您很可能根本不需要任何扩展。只需一个盒子就能让您覆盖。之后,您应该进行负载平衡,就像您提到的那样,每种架构几乎都是相同的(就像您所说的,您可以先启动多个节点进程。但是,当您变得很大时,您需要更多的盒子)。
Nginx负载均衡示例:
http { upstream myproject { server 127.0.0.1:8000 weight=3; server 127.0.0.1:8001; server 127.0.0.1:8002; server 127.0.0.1:8003; } server { listen 80; server_name www.domain.com; location / { proxy_pass http://myproject; } }}雷迪斯
每秒20个查询
node.js不费吹灰之力。您应该使用redis作为您的数据存储,因为它非常快:)。当您使用node_redis时,甚至为节点提供一个ac库。
npm install hiredis redis
Hiredis之所以能够为您带来无与伦比的性能,是因为它可以编译为节点内部的C代码。以下是与hiredis一起使用时redis的一些基准。
PING: 20000 ops 46189.38 ops/sec 1/4/1.082SET: 20000 ops 41237.11 ops/sec 0/6/1.210GET: 20000 ops 39682.54 ops/sec 1/7/1.257INCR: 20000 ops 40080.16 ops/sec 0/8/1.242LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287
当您查看这些数字时,则 没有显示 20 / s :)。
认证方式
更新:
每个人
Openid
我说的很多,但是为了上帝的爱,请不要尝试实现自己的身份验证系统。这可能是不安全的(很多事情可能会出错),很多工作。对于身份验证,您应该使用出色的connect-
auth库使用facebook-
connect,twitter单点登录等。然后,您就可以放心了,因为他们有专家测试那里的登录系统是否有漏洞,并且也不会通过纯文本传输密码,但是感谢上帝使用https。
输入数据验证
要验证输入,可以使用node-validator。
var check = require('validator').check, sanitize = require('validator').sanitize//Validatecheck('test@email.com').len(6, 64).isEmail(); //Methods are chainablecheck('abc').isInt(); //Throws 'Invalid integer'check('abc', 'Please enter a number').isInt(); //Throws 'Please enter a number'check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);//Sanitize / Filtervar int = sanitize('0123').toInt(); //123var bool = sanitize('true').toBoolean(); //truevar str = sanitize(' str hello n').trim(); //'hello'var str = sanitize('aaaaaaaaab').ltrim('a'); //'b'var str = sanitize(large_input_str).xss();var str = sanitize('<a>').entityDepre(); //'<a>'还有一个此表单库可帮助您创建表单。



