2013-07-13 31 views
13

Tôi đang cố gắng xây dựng ứng dụng nodejs mà sẽ tận dụng lợi thế của máy đa lõi (a.k.a. clustering) và tôi có một câu hỏi về phiên. Mã của tôi trông như thế này:Nodejs Clustering và expressjs phiên

var cluster = exports.cluster = require('cluster'); 
var numCPUs = require('os').cpus().length; 

if (cluster.isMaster) { 

    for (var i = 0; i < numCPUs; i++) { 
    cluster.fork(); 
    } 

    cluster.on('exit', function(worker, code, signal) { 
    console.log('worker ' + worker.process.pid + ' died. Trying to respawn...'); 
    cluster.fork(); 
    }); 

} else { 

//spawn express etc 

} 

Câu hỏi của tôi là: Mỗi lần một người dùng duy nhất chạm dụ nút ngẫu nhiên hoặc ví dụ như lần đầu tiên anh mở ra trang và chạm nút N4 và đến phiên mình hết hạn, ông nhấn nút N4 trên mọi yêu cầu? Đối với những người không hiểu câu hỏi của tôi, tôi sẽ cố gắng giải thích những gì tôi lo lắng: Người dùng vào trang của tôi, anh ấy đăng nhập vào nút N3, sau đó tôi đặt req.session.userdata thành dữ liệu ngẫu nhiên, anh ấy làm mới các trang và ông nhấn Node N4, tôi sẽ có thể truy cập req.session.userdata từ nút khác nhau? Điều đó có nghĩa là có cơ hội để người dùng đăng xuất ngẫu nhiên hoặc tôi chỉ không hiểu cách phân cụm với các tác phẩm nhanh?

Trả lời

11

Bạn đúng là lưu trữ phiên trong bộ nhớ trong Connect/Express không phù hợp để hỗ trợ nhiều hơn một phiên bản. Giải pháp là triển khai một kho lưu trữ phiên với cơ sở dữ liệu sao lưu. Đề xuất của tôi là kết nối-redis và mã mẫu là Session Undefined - Using Connect-Redis/ExpressJS/Node

Nhưng có hàng tá tùy chọn.

Các vấn đề liên quan