Балансування навантаження
Швидше за все для найпростіших сайтів вам взагалі не потрібно масштабування. Лише одна коробка забезпечить вас покриттям. Після цього вам слід виконати балансування навантаження, як ви згадуєте, що майже однаково для кожної архітектури (як ви кажете, що спочатку можна запустити кілька процесів вузлів. Але коли ви дійсно великі, вам потрібно більше ящиків).
Приклад балансування навантаження 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:
}
}
}
Редіс
20 запитів в секунду
Немає поту для node.js. Ви повинні використовувати redis як свою сховище даних, бо це шалено швидко :). Існує навіть бібліотека змінного струму для node, коли ви використовуєте node_redis .
npm install hiredis redis
Hiredis - це те, що дає вам продуктивність kickass, оскільки він компілюється в код C всередині вузла. Ось кілька орієнтирів від redis при використанні з 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
Коли ви дивитесь на ці цифри, тоді 20 / с - НІЩО :).
Аутентифікація
Оновлення:
Я говорю це багато, але для любові до Бога, будь ласка, не намагайтеся впровадити власну систему автентифікації. Можливо, це буде небезпечно (багато чого може піти не так), багато роботи. Для автентифікації слід використовувати facebook-connect, twitter single sign-in тощо, використовуючи чудову бібліотеку connect-auth . Тоді ви в безпеці, тому що у них є експерти, які перевіряють там системи входу на наявність дірок, а також не передають паролі за допомогою простого тексту, але дякуємо за використання https. Я також відповів на тему для користувача, який хотів використовувати facebook-connect .
перевірка вхідних даних
Для перевірки введення ви можете використовувати 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();
Існує також ця бібліотека форм, яка допоможе вам створити форми.