2012-07-01 4 views
7

Ho creato un'applicazione nodejs che funziona bene in un singolo core. Questa applicazione utilizza socket.io per la comunicazione veloce &.Un buon modo di utilizzare socket.io con cluster nel server multi-core?

Ora, volevo scalare la mia applicazione verticalmente, abilitandola a girare su un sistema multi-core usando il modulo cluster in nodejs.

Tutto nella mia applicazione memorizza i dati in Redis, pertanto, non vi è alcun problema nel gestire alcune sessioni di dati di base &.

Tuttavia, quando si generano più processi di lavoro tramite cluster, sembra che ogni operatore abbia la propria gestione socket.

Ad esempio, si assume che esista una chat room denominata "guest" room.

L'utente A e l'utente B si collegano alla stanza e vengono distribuiti al diverso processo di lavoro.

Poiché sono in processi diversi e questi processi non condividono il listener di socket, non è possibile che l'utente A e l'utente B parlino l'un l'altro.

Qual è un buon approccio per risolvere questo problema? Socket.io supporta il sistema multi-core?

È socket.io solo per uso single-core?

+3

È possibile eseguire socket.io con la 'RedisStore' per il ridimensionamento dei processi/server. Vedi [questa mia precedente risposta] (http://stackoverflow.com/questions/9267292/examples-in-using-redisstore-in-socket-io/9275798#9275798) per maggiore profondità. –

risposta

3

È possibile utilizzare socket.io normalmente ma con un negozio redis in background. Supporterà anche più istanze su socket.io senza alcuna libreria esterna. Supporta anche stanze su più istanze.

Link a come impostare socket.io con Redis: Using Multiples Nodes/Processes with socket.io

+0

Penso che il link non indichi realmente la posizione che pensavate fosse. – funerr

+0

Anche io penso. Lascia che ti modifichi. –

Problemi correlati