2012-07-01 7 views
7

Ich habe eine nodejs-Anwendung erstellt, die in einem einzigen Kern funktioniert. Diese Anwendung verwendet socket.io für Licht & schnelle Kommunikation.Gute Möglichkeit, socket.io mit Cluster im Multicore-Server zu verwenden?

Jetzt wollte ich meine Anwendung vertikal skalieren, indem sie es auf Multi-Core-System mit cluster-Modul in Nodejs ausführen.

Alles in meiner Anwendung speichert Daten in Redis, daher gibt es kein Problem mit einigen grundlegenden Daten & Sitzungen.

Wenn ich jedoch mehrere Worker-Prozesse mit Cluster spawn, scheint es, dass jeder Worker seine eigene Socket-Behandlung hat.

Nehmen wir zum Beispiel an, es gibt einen Chat-Raum namens "Gast" -Raum.

Benutzer A und Benutzer B verbinden sich mit dem Raum und sie werden an den verschiedenen Arbeitsprozess verteilt.

Da sie sich in verschiedenen Prozessen befinden und diese Prozesse Sockets Listener nicht teilen, gibt es keine Möglichkeit für Benutzer A und Benutzer B miteinander zu sprechen.

Was ist ein guter Ansatz, um dieses Problem zu lösen? Unterstützt socket.io ein Multicore-System?

Ist socket.io nur für Single-Core-Verwendung?

+3

Sie können für die Skalierung über Prozesse/Server socket.io mit dem 'RedisStore' laufen. Siehe [diese vorherige Antwort von mir] (http://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io/9275798#9275798) für mehr Tiefe. –

Antwort

3

Sie könnten socket.io als normal verwenden, aber mit einem Redis-Speicher im Hintergrund. Es unterstützt auch mehrere Instanzen auf socket.io ohne externe Bibliothek. Es unterstützt sogar Räume über mehrere Instanzen hinweg.

Link zu wie socket.io mit redis einzurichten: Using Multiples Nodes/Processes with socket.io

+0

Ich denke, dass der Link nicht wirklich auf den Ort zeigt, den Sie dachten, dass es war. – funerr

+0

denke ich auch. Lass mich das bearbeiten. –

Verwandte Themen