Pergunta

Eu sou um programador Java e não muito familiarizado com a forma como redes de trabalho (excepto conexões básicas UDP / TCP)

Say I tem servidores rodando em máquinas nos EUA, Ásia, América Latina e Europa. Quando um usuário solicita um serviço, eu quero seu pedido para ir para o servidor mais próximo a eles.

É possível para mim ter um endereço: mycompany.com, e de alguma forma obter solicitações encaminhadas para o servidor apropriado? Aparentemente, quando alguém vai para cnn.com, que recebem as imagens, vídeos, etc. de um servidor próximo a eles. Francamente, não vejo como isso funciona.

A propósito, meus servidores não servem páginas web, eles servem outros serviços, como os dados do mercado de ações .... apenas no caso que é relevante.

Desde que eu sou um programador, eu estou interessado em saber como seria fazê-lo em software. Uma vez que este é pouco mais que uma curiosidade, ponteiros para produtos ou serviços comerciais não será muito útil na compreensão deste problema:)

Foi útil?

Solução

Uma abordagem simples seria a de olhar para o primeiro byte (Classe A) do endereço IP que entra o pedido UDP DNS e, em seguida, baseado fora que você poderia entregar o IP geo-localizado direita.

Outras dicas

Outra abordagem seria um pouco mais complicado. Em vez de usar o servidor que está geograficamente mais próxima do usuário, você pode usar o servidor que tem a menor latência para o usuário.

A menor latência irá fornecer mais rápido velocidades de transferência sendo mais fácil de calcular do que a localização geográfica.

Para um olhar muito mais detalhada, confira este artigo sobre CDNs (preste atenção à Seção de Tecnologia):

Content Delivery Network - Wikipedia

Estes são os tipos de redes que os grandes sites usam para distribuir seu conteúdo sobre a rede (Akamai é um exemplo popular). Como você pode ver, as coisas podem ficar muito complicado muito rapidamente com CDNs ter seus próprios protocolos proprietários, etc ...

Update: eu não vi o aviso legal sobre as soluções comerciais no final do post original. Vou deixar isso para aqueles que podem achar de interesse.

-

Dê uma olhada http://ultradns.com/ . A gerenciado serviço de DNS como essa pode ser exatamente o que você precisa para realizar o que você está procurando.

Amazon.com, Forbes.com, Oracle, todo o uso deles ...

http://ultradns.com/solutions/traffic.html :

solução UltraDNS Traffic Management fornece um conjunto de ferramentas que permitam aos administradores de TI definir configurações de balanceamento de carga para servidores de conteúdo que residem em um ou mais locais geográficos. A Solução de Gerenciamento de Tráfego gerencia o tráfego direcionado para os servidores por alterar dinamicamente as respostas a pedidos de DNS. O balanceamento de carga é realizada com base em métricas dinâmicas obtidas a partir dos servidores host em uma base de monitoramento contínuo. A solução UltraDNS Gestão de Tráfego não é uma única aplicação, mas combina as capacidades de vários sistemas UltraDNS existentes para controle de tráfego, gerenciar falhas de sites e sistemas de conteúdo otimizar web.

Uma abordagem é, como Jeff mencionado, usando o endereço IP: http: //en.wikipedia. org / wiki / Geolocation_software

Na minha experiente, este é preciso para a cidade mais próxima relativamente grande (nos EUA, pelo menos). Existem vários bancos de dados abertos para ajudar nesta (veja o link wiki). Então você pode gerar tags de imagem e links de download e tal com base nessas informações.

Como para localizar o servidor mais próximo, eu tenho certeza que você pode pensar de algumas maneiras de fazer isso. Por exemplo, se o melhor retorno que você pode obter é grande cidade, você pode consultar essa cidade em uma lista de Latitude / Longitude e calcular o servidor mais próximo com base nisso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top