2012-11-12 27 views
9

Tôi đã là một nhà phát triển ứng dụng web ruby ​​/ php trong một thời gian và tôi đã quen với ý tưởng mở rộng ngang các phiên bản máy chủ để xử lý nhiều yêu cầu hơn. Chia tỷ lệ ngang - có nghĩa là các trường hợp riêng biệt của một ứng dụng nằm phía sau bộ cân bằng tải không chia sẻ gì và không biết lẫn nhau.NodeJS chia tỷ lệ ngang

Câu hỏi chính của tôi là Node.js và nhấn mạnh vào một hộp duy nhất chạy một máy chủ node.js để xử lý 'hàng nghìn' yêu cầu đồng thời - là cân bằng tải/tỷ lệ ngang được sử dụng thế nào để mở rộng các ứng dụng nodejs? Việc mở rộng quy mô một ứng dụng nút có bị giới hạn ở việc chia tỷ lệ theo chiều dọc hay không (ném thêm RAM/Xử lý nguồn vào vấn đề)?

Câu hỏi thứ hai của tôi phải thực hiện với quy mô ngang và ổ cắm web node.js. Tôi đã nhìn thấy khá một vài hướng dẫn 'trò chuyện' của Node.js trên mạng để sử dụng các websockets. (yêu thích: http://martinsikora.com/nodejs-and-websocket-simple-chat-tutorial)

Vì các websockets giữ một đường truyền mở mở giữa trình duyệt và máy chủ hiệu quả, nên kiến ​​trúc theo chiều ngang điển hình của thế giới PHP/Ruby gây ra một ứng dụng trò chuyện như được giải thích trong liên kết để phá vỡ - như các yêu cầu kết nối websocket mới sẽ được gán cho các tiến trình/máy chủ khác nhau và sẽ không có một tài nguyên trung tâm nào theo dõi tất cả các máy khách được kết nối?

Trả lời

8

Node.js hỗ trợ mở rộng theo chiều ngang theo cách bạn mô tả thông qua mô-đun cluster tích hợp sẵn.

Về câu hỏi thứ hai của bạn về việc sử dụng websockets/socket.io trong môi trường này, bạn phải sử dụng một cái gì đó như Redis để lưu trữ trạng thái chia sẻ trên nhiều trường hợp của ứng dụng như được mô tả here.

+0

Đây là câu hỏi cũ nhưng tôi đang sử dụng mongodb để lưu trữ và truy xuất tất cả dữ liệu ứng dụng trò chuyện của tôi. Vì tôi muốn quy mô theo chiều ngang ứng dụng của mình vì ứng dụng trò chuyện của tôi không hoạt động khi tôi có nhiều máy chủ. Tôi nên làm gì nếu tôi loại bỏ mongodb hoàn toàn và sử dụng redis? Hoặc là có một giải pháp tốt hơn. – DragonBorn

1

Chức năng cụm của Node.js được giới hạn ở một máy chủ duy nhất có nhiều bộ xử lý. Chủ yếu là nó tận dụng số lượng bộ vi xử lý trong máy chủ. Tôi nghĩ rằng câu hỏi nếu nhiều hơn về kịch bản khi chúng tôi muốn quy mô theo chiều ngang với nhiều máy chủ với một mặt tiền cân bằng tải.

+0

Và để trả lời câu hỏi về socket, giống như bất kỳ cuộc gọi máy chủ nào, cuộc gọi tạo ổ cắm sẽ được cân bằng tải và nói đến nút Nx, trong thời gian tồn tại của ổ cắm web, kết nối TCP này được mở. tức là tất cả các liên lạc từ trình duyệt đến máy chủ, máy chủ đến trình duyệt thông qua ổ cắm web sẽ luôn được phục vụ bởi Nx. – Pramma

0

Nếu bạn có trường hợp node.js trải rộng trên nhiều máy chủ (mở rộng ngang), nó sẽ phục vụ cùng một mục đích, bạn cần lập trình nó đúng cách để hỗ trợ loại thiết lập này.