Bilancio del carico
Molto probabilmente per i siti più semplici non è necessario alcun ridimensionamento. Solo una singola scatola ti coprirà. Dopodiché dovresti eseguire il bilanciamento del carico come stai menzionando che è quasi lo stesso per ogni architettura (come stai dicendo che potresti avviare prima processi a più nodi. Ma quando diventi veramente grande hai bisogno di più scatole).
Esempio di bilanciamento del carico 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 query al secondo
Nessun problema per node.js. Dovresti usare redis come datastore perché è follemente veloce :). C'è anche una libreria ac per node quando usi node_redis .
npm install hiredis redis
Hiredis è ciò che ti dà prestazioni eccezionali perché compila il codice C all'interno del nodo. Di seguito sono riportati alcuni benchmark di redis se utilizzato con 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 guardi quei numeri, 20 / s non è NULLA :).
Autenticazione
Aggiornare:
Lo sto dicendo molto, ma per l'amor di Dio, per favore, non tentare di implementare il tuo sistema di autenticazione. Probabilmente non sarà sicuro (molto può andare storto), molto lavoro. Per l'autenticazione dovresti usare facebook-connect, twitter single sign-in, ecc. Usando l'eccellente libreria connect-auth . Quindi sei al sicuro perché hanno esperti che testano i sistemi di accesso per i buchi e inoltre non trasmettono le password tramite testo normale ma grazie a Dio usa https. Ho anche risposto a un argomento per un utente che desiderava utilizzare facebook-connect .
convalida dei dati di input
Per convalidare l'input è possibile utilizzare node-validator .
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();
C'è anche questa libreria di moduli per aiutarti a creare moduli.