Équilibrage de la charge
Pour les sites les plus simples, vous n'avez probablement pas besoin de mise à l'échelle. Un seul boîtier suffira à vous couvrir. Après cela, vous devriez faire de l'équilibrage de charge comme vous le mentionnez, ce qui est presque la même chose pour toutes les architectures (comme vous le dites, vous pourriez commencer par des processus à nœuds multiples. Mais lorsque vous devenez vraiment gros, vous avez besoin de plus de boîtiers).
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://myproject;
}
}
}
Redis
20 requêtes par seconde
Pas de problème pour node.js. Vous devriez utiliser redis comme votre datastore car il est incroyablement rapide :). Il existe même une bibliothèque c pour node lorsque vous utilisez nœud_redis .
npm install hiredis redis
Hiredis est ce qui vous donne les performances les plus élevées parce qu'il se compile en code C à l'intérieur de node. Voici quelques benchmarks 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 est NOTHING :).
Authentification
Mise à jour :
Je le répète souvent, mais pour l'amour de Dieu, n'essayez pas de mettre en place votre propre système d'authentification. Il ne sera probablement pas sûr (beaucoup de choses peuvent mal tourner) et demandera beaucoup de travail. Pour l'authentification, vous devriez utiliser facebook-connect, twitter single sign-in, etc. en utilisant l'excellent logiciel connect-auth bibliothèque. Vous êtes alors en sécurité car des experts testent les systèmes de connexion pour détecter les failles et ils ne transmettent pas non plus les mots de passe en clair, mais utilisent https, Dieu merci. J'ai aussi répondu à un sujet pour un utilisateur qui voulait utiliser facebook-connect .
validation des données d'entrée
Pour valider l'entrée, vous pouvez utiliser validateur de nœuds .
var check = require('validator').check,
sanitize = require('validator').sanitize
//Validate
check('test@email.com').len(6, 64).isEmail(); //Methods are chainable
check('abc').isInt(); //Throws 'Invalid integer'
check('abc', 'Please enter a number').isInt(); //Throws 'Please enter a number'
check('abcdefghijklmnopzrtsuvqxyz').is(/^[a-z]+$/);
//Sanitize / Filter
var int = sanitize('0123').toInt(); //123
var bool = sanitize('true').toBoolean(); //true
var str = sanitize(' \s\t\r hello \n').trim(); //'hello'
var str = sanitize('aaaaaaaaab').ltrim('a'); //'b'
var str = sanitize(large_input_str).xss();
var str = sanitize('<a>').entityDecode(); //'<a>'
Il y a aussi ceci formulaires pour vous aider à créer des formulaires.
0 votes
Qu'entendez-vous par "mise à l'échelle d'un nœud" ? Lancer plusieurs processus de nœuds ?
3 votes
20 requêtes par seconde, c'est assez faible. Node.js devrait être capable de gérer des milliers de connexions simultanées. Il suffit de ne pas faire de traitement lourd en boucle car cela bloquerait l'ensemble de l'interpréteur. Votre cas d'utilisation devrait être assez léger en comparaison. Dans Node, les connexions aux bases de données sont automatiquement créées dans des threads et gérées de manière asynchrone au niveau du javascript.