2017-10-30 37 views
5

Từ những gì tôi hiểu, các vùng chứa Docker sử dụng nhiều luồng và các ứng dụng Node.js chỉ sử dụng một luồng đơn. Bằng cách chạy một cái gì đó như pm2, xử lý phân cụm Node.js, tôi có thể sử dụng tất cả các lõi có sẵn cho vùng chứa Docker.Node.js clustering so với nhiều vùng chứa Docker

Điều này có nghĩa là tôi có thể sử dụng nhiều hơn đối với từng trường hợp Docker bằng cách nhóm các quy trình Node.js? Nếu vậy, điều này sẽ không được ưa thích khi chỉ chạy một cá thể Node.js được tạo luồng duy nhất cho mỗi vùng chứa?

Một mối quan tâm sẽ là nếu điều này có tác dụng phụ gây ra bởi khả năng của vùng chứa Docker tăng hoặc giảm số lượng CPU đang chạy.

Trả lời

0

Thứ nhất, về cơ bản bạn không cần pm2 để chạy cụm nút. nút đi kèm với một inbuilt clusters module để tận dụng lợi thế của một máy đa lõi. Ngoài ra, việc thu nhỏ một thể hiện không thực sự có tác động trừ khi bạn mã hóa số lượng công nhân. Tham khảo mã ví dụ trong mô-đun cụm để hiểu cách bạn có thể sinh ra các công nhân sử dụng các cụm.

+0

Tôi nghĩ rằng câu hỏi là về phân cụm so với nhiều vùng chứa docker và không tự phân cụm ứng dụng - pm2 chỉ là một ví dụ :-) – stefanobaldo

0

Nếu bạn đang nói về việc phân cụm NodeJS bên trong một thành phần docker khác, tôi không nghĩ điều đó sẽ giúp bạn tăng thêm. NodeJS như bạn nói chạy trong một chủ đề duy nhất để một trong hai pm2 (tôi thực sự sử dụng nó) hoặc docker sẽ có tác dụng tương tự trong việc phân phối tải.

NodeJS có khái niệm về nhân viên web để xử lý cách xử lý các yêu cầu gửi đến nhưng ngay cả một máy chủ không nhanh sẽ xử lý hàng trăm yêu cầu vì là kiến ​​trúc không chặn.

Tôi nhận ra mình vẫn cần phải đào vào Docker mà tôi muốn nhưng tôi không có thời gian nhưng những gì tôi sẽ làm là để có 1 hình ảnh docker cho mỗi máy chủ (ảo hoặc vật lý) và sau đó có pm2 chạy một số trường hợp của nút bên trong nó.

Lý do là tôi muốn Docker xử lý các phụ thuộc cho tôi và tôi muốn PM2 xử lý việc quản lý cụm vì nó có các tính năng tuyệt vời như tự động khởi động lại khi bộ nhớ đạt đến đích hoặc khởi động lại nút bị lỗi

+0

Bạn có ý nghĩa gì bởi "NodeJS có khái niệm về công nhân web"? –

+0

Có lẽ công nhân web không phải là thuật ngữ tốt nhất nhưng tôi có nghĩa là các maxSockets bạn có thể cấu hình: http.globalAgent.maxSockets – sfratini

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