J'ai une question sur la façon d'équilibrer la charge des sockets Web.
J'ai un serveur qui prend en charge les sockets Web. Les navigateurs se connectent à mon site et chacun ouvre une prise Web 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, je passerais à l'échelle en ajoutant un deuxième serveur et un équilibreur de charge devant les deux serveurs Web.
Avec les sockets Web, la connexion doit être directement avec le serveur Web, pas 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 connectaient à l'équilibreur de charge, je ne pourrais pas prendre en charge plus de 64 000 utilisateurs simultanés.
Alors, comment puis-je -
amener le client à se connecter 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 les équilibreurs de charge (ou autre) modifient de manière aléatoire l'URL du script, chaque fois que la page est initialement demandée?
gérer un début de vague? 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 parti pendant un certain temps. Donc, je suppose que je devrais revenir à l'équilibreur de charge pour interroger l'adresse du prochain nœud à utiliser?
Je me suis demandé si les équilibreurs de charge envoyaient une redirection sur la demande initiale, de sorte que le navigateur demande initialement
www.mydomain.com
et soit redirigé verswww34.mydomain.com
. Cela fonctionne très bien, jusqu'à ce que le nœud tombe en panne - et des sites comme Facebook ne le font pas. Comment font-ils?