Tenho uma pergunta sobre como balancear a carga dos soquetes da web.
Tenho um servidor que suporta sockets web. Os navegadores se conectam ao meu site e cada um abre um portal para www.mydomain.com
. Dessa forma, meu aplicativo de rede social pode enviar mensagens para os clientes.
Tradicionalmente, usando apenas solicitações HTTP, eu aumentaria a escala adicionando um segundo servidor e um balanceador de carga na frente dos dois servidores da web.
Com os soquetes da web, a conexão deve ser diretamente com o servidor da web, não com os balanceadores de carga, porque se uma máquina tem um limite físico de, digamos, 64k portas abertas e os clientes estão se conectando ao balanceador de carga, então não posso suportar mais de 64 mil usuários simultâneos.
Então, como eu -
fazer com que o cliente se conecte diretamente ao servidor da web (em vez do balanceador de carga) quando a página for carregada? Devo simplesmente carregar o JavaScript de um nó e os balanceadores de carga (ou qualquer outro) modificam aleatoriamente a URL do script, sempre que a página é solicitada inicialmente?
lidar com um início ondulante? O navegador notará que a conexão é encerrada quando o servidor da web é encerrado. Posso escrever código JavaScript para tentar reabrir a conexão, mas o nó ficará ausente por um tempo. Então, acho que teria que voltar ao balanceador de carga para consultar o endereço do próximo nó a ser usado.
Eu me perguntei sobre os balanceadores de carga enviando um redirecionamento na solicitação inicial, para que o navegador inicialmente solicite
www.mydomain.com
e seja redirecionado parawww34.mydomain.com
. Isso funciona muito bem, até o nó cair - e sites como o Facebook não fazem isso. Como eles fazem isso?