2011-11-01 28 views
11

Trước khi bắt đầu viết ứng dụng của mình, tôi cần phải biết phải làm gì khi một cá thể node.js (express và (socket.io hoặc nowjs)) không phải là đủ nữa. Bạn có thể nói với tôi bây giờ, rằng tôi không nên quan tâm đến quy mô cho đến khi nó về thời gian nhưng tôi không muốn phát triển một ứng dụng và gặp rắc rối bởi vì bạn không thể dễ dàng mở rộng socket.io hoặc nowjs trên nhiều trường hợp.Node: Scale socket.io/nowjs - scale trên các trường hợp khác nhau

Gần đây tôi đã đọc rằng socket.io giờ đây hỗ trợ cách chia tỷ lệ bằng Redis (mà tôi cũng không có kinh nghiệm). Nowjs được xây dựng dựa trên socket.io - nó hoạt động theo cùng một cách? Trên nowjs.org bạn có thể đọc rằng "phiên bản phân phối của NowJS" đang được phát triển và sẽ tốn tiền.

Trả lời

14

Nếu bạn cần mở rộng nút, nơi đầu tiên mọi người thường bắt đầu là đặt bộ cân bằng tải trước nhiều phiên bản nút. Tiêu chuẩn cho ngày hôm nay là nginx, mặc dù tôi muốn kiểm tra nút 'bouncy' cân bằng nút xuất hiện gần đây. Dưới đây là một ví dụ về một người nào đó sử dụng proxy nginx ngược lại để quản lý nhiều trường hợp nút:

Node.js + Nginx - What now?

Điều thứ hai bạn đề cập đến là socket.io/nowjs. Tùy thuộc vào cách bạn đang sử dụng các khung công tác này, bạn có thể gặp phải tình huống mà bạn muốn chia sẻ bối cảnh giữa các máy khách đang nhấn nhiều phiên bản node.js. Nếu đúng như vậy, tôi khuyên bạn nên sử dụng một cửa hàng liên tục, như redis, để thu hẹp khoảng cách giữa các phiên bản nút của bạn. Dưới đây là một ví dụ:

How to reuse redis connection in socket.io?

Hy vọng rằng điều này là đủ thông tin và đọc để giúp bạn bắt đầu, hãy để tôi biết nếu bạn có bất cứ thắc mắc.

Mã hóa vui vẻ!

+0

Cảm ơn, bạn có biết liệu bạn có thể sử dụng nowjs với redis không? – Eliasdx

+0

Chắc chắn bạn có thể - chúng là hai công nghệ hoàn toàn khác nhau với các công dụng khác nhau. Nowjs sẽ cung cấp cho bạn các tính năng kết nối máy khách-máy khách liên tục tương tự như socket.io. Điều này rất hữu ích cho những thứ như nhắn tin máy chủ đến máy khách, phát sóng khách hàng, v.v. Ví dụ cổ điển đang xây dựng một phòng chat. Redis được sử dụng nhiều hơn như kho lưu trữ dữ liệu phía sau - nó có thể làm những thứ như lưu trữ cặp khóa-giá trị, pubsub, v.v. Nó nằm ngoài nút như một quá trình riêng biệt (hoặc thậm chí trên một máy riêng). nhiều máy chủ. –

1

Cũng giống như một sidenote vào các cuộc thảo luận để sử dụng nginx cho reverse proxy với socket.io, cách tôi hiểu nó ít nhất , nginx 1.0.x là phiên bản ổn định không hỗ trợ proxy của các kết nối http/1.1 (cần thiết để làm việc socket.io với các ổ cắm web). có một giải pháp được mô tả ở đây: http://www.letseehere.com/reverse-proxy-web-sockets để làm cho nó hoạt động hoặc sử dụng một cái gì đó như thế này: https://github.com/nodejitsu/node-http-proxy thay vào đó, các guys tại nodejitsu nói điều này nên hỗ trợ nó.

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