L'équilibrage de charge
Très probablement, pour les sites les plus simples, vous n'avez pas du tout besoin de mise à l'échelle. Une seule boîte vous couvrira. Après cela, vous devriez faire un équilibrage de charge comme vous le dites, qui est presque le même pour chaque architecture (comme vous le dites, vous pouvez commencer par lancer plusieurs processus de nœuds. Mais lorsque vous devenez vraiment gros, vous avez besoin de plus de boîtes).
Exemple d'équilibrage de charge 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 requêtes par seconde
Pas de soucis pour node.js. Vous devriez utiliser redis comme magasin de données car il est insensé rapide :). Il existe même une bibliothèque ac pour node lorsque vous utilisez node_redis .
npm install hiredis redis
Hiredis est ce qui vous donne des performances exceptionnelles car il se compile en code C à l'intérieur du nœud. Voici quelques repères de redis lorsqu'il est utilisé avec 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
Quand vous regardez ces chiffres, alors 20 / s n'est RIEN :).
Authentification
Mise à jour:
Je dis beaucoup cela, mais pour l'amour de Dieu, n'essayez pas de mettre en œuvre votre propre système d'authentification. Cela va probablement être dangereux (beaucoup de choses peuvent mal tourner), beaucoup de travail. Pour l'authentification, vous devez utiliser facebook-connect, connexion unique Twitter, etc. en utilisant l'excellente bibliothèque connect-auth . Ensuite, vous êtes protégé car ils ont des experts qui testent les systèmes de connexion pour détecter les trous et ne transmettent pas non plus les mots de passe via du texte brut, mais merci à Dieu d'utiliser https. J'ai également répondu à un sujet pour un utilisateur souhaitant utiliser facebook-connect .
validation des données d'entrée
Pour valider l'entrée, vous pouvez utiliser 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();
Il existe également cette bibliothèque de formulaires pour vous aider à créer des formulaires.