Balanceamento de carga
Muito provavelmente, para os sites mais simples, você não precisa de nenhum dimensionamento. Apenas uma única caixa o ajudará. Depois disso, você deve fazer o balanceamento de carga, como está mencionando, que é quase o mesmo para todas as arquiteturas (como você está dizendo que pode iniciar vários processos de nó primeiro. Mas quando você ficar muito grande, precisará de mais caixas).
Exemplo de balanceamento de carga 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:
}
}
}
Redis
20 consultas por segundo
Sem problemas para node.js. Você deve usar redis como seu armazenamento de dados porque ele é extremamente rápido :). Existe até uma biblioteca AC para node quando você usa node_redis .
npm install hiredis redis
Hiredis é o que lhe dá um desempenho incrível porque compila para o código C dentro do nó. Aqui estão alguns benchmarks do redis quando usados com o hiredis.
PING: 20000 ops 46189.38 ops/sec 1/4/1.082
SET: 20000 ops 41237.11 ops/sec 0/6/1.210
GET: 20000 ops 39682.54 ops/sec 1/7/1.257
INCR: 20000 ops 40080.16 ops/sec 0/8/1.242
LPUSH: 20000 ops 41152.26 ops/sec 0/3/1.212
LRANGE (10 elements): 20000 ops 36563.07 ops/sec 1/8/1.363
LRANGE (100 elements): 20000 ops 21834.06 ops/sec 0/9/2.287
Quando você olha para esses números, então 20 / s não é NADA :).
Autenticação
Atualizar:
Estou dizendo muito isso, mas pelo amor de Deus, por favor, não tente implementar seu próprio sistema de autenticação. Provavelmente não será seguro (muita coisa pode dar errado), muito trabalho. Para autenticação, você deve usar facebook-connect, twitter single sign-in, etc. usando a excelente biblioteca connect-auth Então você está seguro porque eles têm especialistas testando seus sistemas de login para falhas e também não transmitem senhas via texto simples, mas graças a Deus, use https. Eu também respondi um tópico para um usuário que queria usar o Facebook Connect .
validação de dados de entrada
Para validar a entrada, você pode usar o validador de nó .
var check = require('validator').check,
sanitize = require('validator').sanitize
check('test@email.com').len(6, 64).isEmail();
check('abc').isInt();
check('abc', 'Please enter a number').isInt();
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);
var int = sanitize('0123').toInt();
var bool = sanitize('true').toBoolean();
var str = sanitize(' \s\t\r hello \n').trim();
var str = sanitize('aaaaaaaaab').ltrim('a');
var str = sanitize(large_input_str).xss();
var str = sanitize('<a>').entityDecode();
Também existe esta biblioteca de formulários para ajudá-lo a criar formulários.