Tôi không phải là một chủ node.js, vì vậy tôi muốn có thêm quan điểm về điều này.Xây dựng một ứng dụng node.js có hiệu suất cao với cluster và nút-webworker
Tôi đang tạo một máy chủ web HTTP node.js không phải xử lý không chỉ nhiều kết nối đồng thời mà còn thực hiện các công việc dài. Theo mặc định node.js chạy trên một tiến trình và nếu có một đoạn mã mất nhiều thời gian để thực thi bất kỳ kết nối nào sau đó phải đợi cho đến khi mã kết thúc những gì nó đang thực hiện trên kết nối trước đó.
Ví dụ:
var http = require('http');
http.createServer(function (req, res) {
doSomething(); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
Vì vậy, tôi đã suy nghĩ để chạy tất cả các công việc chạy dài trong chủ đề riêng biệt bằng cách sử dụng node-webworker thư viện:
var http = require('http');
var sys = require('sys');
var Worker = require('webworker');
http.createServer(function (req, res) {
var w = new Worker('doSomething.js'); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
Và để làm cho toàn bộ điều performant hơn, tôi cũng nghĩ sử dụng cluster để tạo quy trình nút mới cho mỗi lõi CPU. Bằng cách này, tôi mong muốn cân bằng các kết nối khách hàng thông qua các quá trình khác nhau với cluster
(giả sử 4 quy trình nút nếu tôi chạy nó trên quad-core), và sau đó thực hiện công việc dài chạy trên các chủ đề riêng biệt với node-webworker
.
Có vấn đề gì với cấu hình này?
Cập nhật lần cuối 2 năm trước –