sql >> Database >  >> NoSQL >> Redis

Ik ontvang dubbele berichten in mijn geclusterde node.js/socket.io/redis pub/sub-toepassing

Ik heb gevochten met cluster en socket.io. Elke keer dat ik de clusterfunctie gebruik (ik gebruik echter de ingebouwde Nodejs-cluster), krijg ik veel prestatieproblemen en problemen met socket.io.

Terwijl ik dit probeerde te onderzoeken, heb ik de bugrapporten en dergelijke op de socket.io git doorgespit en iedereen die clusters of externe load balancers op hun servers gebruikt, lijkt problemen te hebben met socket.io.

Het lijkt het probleem te veroorzaken "client not handshaken client moet opnieuw verbinding maken", wat u zult zien als u de uitgebreide logging verhoogt. Dit verschijnt vaak wanneer socket.io in een cluster wordt uitgevoerd, dus ik denk dat het hierop terugkomt. D.w.z. dat de client wordt verbonden met een willekeurige instantie in het socket.io-cluster elke keer dat het een nieuwe verbinding maakt (het doet verschillende http/socket/flash-verbindingen bij het autoriseren en meer de hele tijd later bij het pollen naar nieuwe gegevens).

Voor nu ben ik teruggekeerd naar het gebruik van slechts 1 socket.io-proces tegelijk, dit kan een bug zijn, maar kan ook een tekortkoming zijn van hoe socket.io is gebouwd.

Toegevoegd:mijn manier om dit in de toekomst op te lossen, is door een unieke poort toe te wijzen aan elke socket.io-instantie in het cluster en vervolgens de poortselectie aan de clientzijde te cachen.



  1. Hoe gebruik ik redis' `DUMP` en `RESTORE` (offline)?

  2. hoe een .csv-gegevensbestand in de Redis-database te importeren

  3. MongoDB Java invoegen Throws org.bson.codecs.configuration.CodecConfigurationException:kan geen codec vinden voor klasse io.github.ilkgunel.mongodb.Pojo

  4. MongoDB-gegevens in rust versleutelen