Redis
 sql >> Database >  >> NoSQL >> Redis

Ricevo messaggi duplicati nella mia applicazione cluster node.js/socket.io/redis pub/sub

Ho combattuto con cluster e socket.io. Ogni volta che utilizzo la funzione cluster (tuttavia utilizzo il cluster Nodejs integrato) ottengo molti problemi di prestazioni e problemi con socket.io.

Durante il tentativo di ricerca su questo, ho scavato tra le segnalazioni di bug e simili su socket.io git e chiunque utilizzi cluster o bilanciatori di carico esterni sui propri server sembra avere problemi con socket.io.

Sembra produrre il problema "client non handshaken client dovrebbe riconnettersi" che vedrai se aumenti la registrazione dettagliata. Questo appare molto ogni volta che socket.io viene eseguito in un cluster, quindi penso che torni a questo. Ad esempio, il client viene connesso a un'istanza randomizzata nel cluster socket.io ogni volta che esegue una nuova connessione (esegue diverse connessioni http/socket/flash durante l'autorizzazione e altre sempre più tardi durante il polling di nuovi dati).

Per ora sono tornato a utilizzare solo 1 processo socket.io alla volta, questo potrebbe essere un bug ma potrebbe anche essere un difetto di come viene costruito socket.io.

Aggiunto:il mio modo per risolvere questo problema in futuro sarà assegnare una porta univoca a ciascuna istanza socket.io all'interno del cluster e quindi selezionare la porta nella cache sul lato client.