Penyeimbang beban
Kemungkinan besar untuk situs paling sederhana, Anda tidak memerlukan penskalaan sama sekali. Hanya satu kotak akan membuat Anda terlindungi. Setelah itu Anda harus melakukan load balancing seperti yang Anda sebutkan yang hampir sama untuk setiap arsitektur (seperti yang Anda katakan, Anda dapat memulai beberapa proses node terlebih dahulu. Tetapi ketika Anda menjadi sangat besar Anda membutuhkan lebih banyak kotak).
Contoh load balancing 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 kueri per detik
Tidak perlu repot untuk node.js. Anda harus menggunakan redis sebagai datastore Anda karena ini sangat cepat :). Bahkan ada pustaka ac untuk node saat Anda menggunakan node_redis .
npm install hiredis redis
Hiredis adalah apa yang memberi Anda kinerja kickass karena ia mengkompilasi ke kode C di dalam node. Berikut adalah beberapa tolok ukur dari redis saat digunakan dengan 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
Ketika Anda melihat angka-angka itu maka 20 / s TIDAK ADA :).
Autentikasi
Memperbarui:
Saya banyak menceritakan hal ini tetapi demi cinta Tuhan tolong jangan mencoba menerapkan sistem otentikasi Anda sendiri. Ini mungkin akan menjadi tidak aman (banyak yang bisa salah), banyak pekerjaan. Untuk otentikasi, Anda harus menggunakan facebook-connect, twitter single sign-in, dll menggunakan pustaka connect-auth yang sangat baik . Maka Anda dilindungi dengan aman karena mereka memiliki ahli yang menguji di sana sistem masuk untuk lubang dan juga tidak mengirimkan kata sandi melalui teks biasa tetapi terima kasih tuhan menggunakan https. Saya juga telah menjawab topik untuk pengguna yang ingin menggunakan facebook-connect .
validasi data masukan
Untuk memvalidasi input, Anda dapat menggunakan 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();
Ada juga pustaka formulir ini untuk membantu Anda membuat formulir.