Lastverteilung
Höchstwahrscheinlich benötigen Sie für die einfachsten Websites überhaupt keine Skalierung. Mit nur einer einzigen Box sind Sie abgesichert. Danach sollten Sie einen Lastenausgleich durchführen, wie Sie bereits erwähnt haben, der für jede Architektur fast gleich ist (wie Sie sagen, Sie könnten zuerst mehrere Knotenprozesse starten. Wenn Sie jedoch sehr groß werden, benötigen Sie mehr Boxen).
Beispiel für einen Nginx-Lastausgleich :
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 Abfragen pro Sekunde
Kein Schweiß für node.js. Sie sollten redis als Datenspeicher verwenden, da es schnell verrückt ist :). Es gibt sogar eine Wechselstrombibliothek für Knoten, wenn Sie node_redis verwenden .
npm install hiredis redis
Hiredis bietet Ihnen eine hervorragende Leistung, da es innerhalb des Knotens zu C-Code kompiliert wird. Hier sind einige Benchmarks von Redis bei Verwendung mit 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
Wenn Sie sich diese Zahlen ansehen, dann sind 20 / s NICHTS :).
Authentifizierung
Aktualisieren:
Ich erzähle das viel, aber aus Liebe zu Gott versuchen Sie bitte nicht, Ihr eigenes Authentifizierungssystem zu implementieren. Es wird wahrscheinlich unsicher sein (viel kann schief gehen), viel Arbeit. Für die Authentifizierung sollten Sie Facebook-Connect, Twitter Single Sign-In usw. mit der hervorragenden Connect-Auth- Bibliothek verwenden. Dann sind Sie sicher abgesichert, weil sie Experten haben, die dort Anmeldesysteme auf Löcher testen und die Passwörter auch nicht per Klartext übertragen, sondern Gott sei Dank für die Verwendung von https. Ich habe auch ein Thema für einen Benutzer beantwortet, der Facebook-Connect verwenden wollte .
Validierung von Eingabedaten
Um die Eingabe zu validieren, können Sie den Node-Validator verwenden .
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>'
Es gibt auch diese Formularbibliothek, mit der Sie Formulare erstellen können.