J'ai une question sur la façon d'équilibrer la charge des web sockets.
J'ai un serveur qui prend en charge les web sockets. Les navigateurs se connectent à mon site et chacun d'entre eux ouvre un socket web pour www.mydomain.com
. De cette façon, mon application de réseau social peut envoyer des messages aux clients.
Traditionnellement, en utilisant uniquement des requêtes HTTP, j'augmentais la capacité en ajoutant un deuxième serveur et un équilibreur de charge devant les deux serveurs web.
Avec les web sockets, la connexion doit se faire directement avec le serveur web, et non avec les équilibreurs de charge, car si une machine a une limite physique de 64 000 ports ouverts, par exemple, et que les clients se connectent à l'équilibreur de charge, je ne pourrais pas prendre en charge plus de 64 000 utilisateurs simultanés.
Alors comment je fais
-
faire en sorte que le client se connecte directement au serveur web (plutôt qu'à l'équilibreur de charge) lorsque la page se charge ? Dois-je simplement charger le JavaScript à partir d'un nœud, et l'équilibreur de charge (ou autre) modifie aléatoirement l'URL pour le script, chaque fois que la page est initialement demandée ?
-
gérer un début d'ondulation ? Le navigateur remarquera que la connexion est fermée lorsque le serveur web s'arrête. Je peux écrire du code JavaScript pour tenter de rouvrir la connexion, mais le nœud sera absent pendant un certain temps. Je suppose donc que je devrais retourner à l'équilibreur de charge pour demander l'adresse du prochain nœud à utiliser ?
-
Je me suis demandé si les équilibreurs de charge pouvaient envoyer une redirection lors de la demande initiale, de sorte que le navigateur demande d'abord
www.mydomain.com
et est redirigé verswww34.mydomain.com
. Cela fonctionne très bien, jusqu'à ce que le nœud tombe en panne - et les sites comme Facebook ne font pas cela. Comment le font-ils ?