Tengo una pregunta sobre cómo equilibrar la carga de los sockets web.
Tengo un servidor que admite sockets web. Los navegadores se conectan a mi sitio y cada uno abre una conexión web a www.mydomain.com
. De esa manera, mi aplicación de red social puede enviar mensajes a los clientes.
Tradicionalmente, usando solo solicitudes HTTP, escalaría agregando un segundo servidor y un equilibrador de carga frente a los dos servidores web.
Con los sockets web, la conexión tiene que ser directamente con el servidor web, no con los balanceadores de carga, porque si una máquina tiene un límite físico de, digamos, 64k puertos abiertos, y los clientes se conectan al balanceador de carga, entonces no puedo soportar más de 64.000 usuarios simultáneos.
Entonces, ¿cómo yo ...
conseguir que el cliente se conecte directamente al servidor web (en lugar del equilibrador de carga) cuando se carga la página? ¿Simplemente cargo JavaScript desde un nodo y los balanceadores de carga (o lo que sea) modifican aleatoriamente la URL del script cada vez que se solicita la página inicialmente?
manejar un comienzo de onda? El navegador notará que la conexión se cierra cuando el servidor web se apaga. Puedo escribir código JavaScript para intentar reabrir la conexión, pero el nodo desaparecerá por un tiempo. Entonces, supongo que tendría que volver al equilibrador de carga para consultar la dirección del siguiente nodo a usar.
Me pregunté si los balanceadores de carga envían una redirección en la solicitud inicial, de modo que el navegador inicialmente solicita
www.mydomain.com
y se redirige awww34.mydomain.com
. Eso funciona bastante bien, hasta que el nodo se cae, y sitios como Facebook no hacen eso. ¿Cómo lo hicieron?