2012-07-01 24 views
7

Tôi đã tạo một ứng dụng nodejs hoạt động tốt trong một lõi đơn. Ứng dụng này sử dụng socket.io cho ánh sáng & giao tiếp nhanh.Cách tốt để sử dụng socket.io với cụm máy chủ đa lõi?

Bây giờ, tôi muốn chia tỷ lệ ứng dụng theo chiều dọc, bằng cách cho phép ứng dụng chạy trên hệ thống đa lõi sử dụng mô-đun cluster trong nút jj.

Mọi thứ trong ứng dụng của tôi lưu trữ dữ liệu trong Redis, do đó, không có sự cố khi xử lý một số dữ liệu cơ bản & phiên.

Tuy nhiên, khi tôi sinh ra nhiều quy trình công nhân sử dụng cụm, có vẻ như mỗi công nhân đều có xử lý socket riêng.

Ví dụ: giả sử có phòng trò chuyện được gọi là phòng 'khách'.

Người dùng A và người dùng B kết nối với phòng và họ được phân phối cho quy trình công nhân khác.

Vì chúng nằm trong các quy trình khác nhau và các quy trình này không chia sẻ trình nghe socket, không có cách nào để người dùng A và người dùng B nói chuyện với nhau.

Cách tiếp cận tốt để giải quyết vấn đề này là gì? Socket.io có hỗ trợ hệ thống đa lõi không?

Chỉ socket.io để sử dụng một lõi?

+3

Bạn có thể chạy socket.io với 'RedisStore' cho nhân rộng các quá trình/máy chủ. Xem [câu trả lời trước đây của tôi] (http://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io/9275798#9275798) để biết thêm chiều sâu. –

Trả lời

3

Bạn có thể sử dụng socket.io như bình thường nhưng với cửa sổ redis ở chế độ nền. Nó cũng sẽ hỗ trợ nhiều phiên bản trên socket.io mà không có bất kỳ thư viện bên ngoài nào. Nó thậm chí còn hỗ trợ phòng trên nhiều trường hợp.

Liên kết để làm thế nào để thiết lập socket.io với redis: Using Multiples Nodes/Processes with socket.io

+0

Tôi nghĩ rằng liên kết này không thực sự trỏ đến vị trí bạn nghĩ. – funerr

+0

Tôi cũng nghĩ vậy. Hãy để tôi chỉnh sửa điều đó. –

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