Pergunta

Eu estou trabalhando em um projeto onde temos número (5 no momento) de servidores espalhados por todo o mundo. Os clientes se conectam a um desses servidores através de um corretor centralizado. Sabemos que o país de origem do cliente, mas nada mais. Nós temos o controle total dos servidores para que possamos ter todas as informações que precisa sobre aqueles. Nós não controlamos os clientes, eles têm que se conectar através deste corretor como de acordo com o padrão.

É importante que o corretor escolhe um servidor que tem baixa latência assim com os dados que temos Eu acho que a proximidade é nossos critérios só disponíveis.

A primeira idéia que veio em mente é o ping o cliente de cada servidor, mas não temos um ip, apenas o país.

Outra ideia que tivemos é o ping um nó raiz em cada país de cada servidor. O problema não é encontrar um nó raiz em cada país.

Você tem alguma idéia de como calcular / pesquisa de proximidade entre "países"? Você tem idéias ou idéias sobre como resolver este problema de outra maneira?

Foi útil?

Solução

Eu acho que o termo que você precisa é "carga geográfica de equilíbrio". A maioria dos principais fornecedores de balanceamento de carga tem uma solução aqui - seu corretor poderia usar um destes

.

carga geográfica equilibrar recebe algum útil procurando resultados.

Outras dicas

Isto é complicado, mais do que muitos imaginam, mas eu sinto que há um CORRETO resposta.

É claro que a solução ingênua (mas legal) está verificando IP do cliente, este é um bom começo, mas no "mundo real" Geolocation não é tudo ...

Você só pediu " baixa latência ", que significa que você deve fazer ping entre servidores e clientes e atribuir em conformidade. Um bom exemplo deste problema que tem me afeta pessoalmente muitas vezes é que eu trabalho no Japão, e uma palavra a dizer servidor em Taiwan é muitas vezes mais perto de um servidor nos EUA para mim. MAS , a latência entre o Japão e os EUA é muitas vezes menos (melhor resposta) do que com Taiwan, porque os cabos e roteadores e que-ter-lhe que connect Japão-Taiwan não são tão bons como aqueles entre Japão-EUA . Então, se você me ligado a Taiwan, porque você descobrir o meu IP está mais perto, você estaria me fazendo um muito grande desfavor lá. Além de um ping e pequeno teste real no arranque é mais fácil de fazer do que manter algum banco de dados Geolocation constantemente atualizado

A melhor solução para isso é chamado BGP anycast ( link para um apresentação). É a pedra angular de todas as CDNs modernos.

Com BGP anycast , vários servidores diferentes estão espalhados ao redor do mundo e anunciou à Internet via BGP usando o mesmo IP . Em seguida, a Internet faz a mágica - como de costume, o tráfego rotas líquidos para que mesmo IP via o caminho mais curto, essencialmente selecionar o servidor mais próximo (do ponto de vista da topologia da rede) para cada usuário

.

Infelizmente você não pode simplesmente anunciar nada via BGP-se - apenas as grandes redes (normalmente datacenters) pode fazer isso. Mas soluções acessíveis estão disponíveis, a maioria dos quais são baseados em DNS anycast (ou seja, resolvendo IP do servidor web diferente com base na localização do cliente) - isto não é perfeito, mas é suficiente em muitos casos (exemplos: dnsmadeeasy , Route 53, edgedirector, e praticamente todos os barata CDN - cloudflare, maxcdn, CloudFront etc). Há também soluções que fazem verdadeira anycast BGP, ou seja realmente servir o tráfego HTTP via anycast (por exemplo cachefly) ou permitir que você a fazê-lo (por exemplo hostvirtual - não é barato). Este também pode ser uma leitura interessante.

Paul tem isso, você quer balanceamento de carga geográfica -, mas vou acrescentar que a sua melhor aposta, se ele é de todo uma opção, é encontrar alguém que se especializa em-lo e jogar o dinheiro para eles. É na classe de problemas que são muito mais difícil de forma confiável resolver do que parece à primeira vista.

ping-los e escolher aquele com o menor sons latência bom, mas tenho a sensação de que não irá escala (o que acontece quando você tem 100 ou 1000?) - então talvez outra solução é melhor? Há lotes de fornecedores lá fora, com sistemas que fazem apenas isso; anycast DNS é bastante utilizada também.

Se você se limitou a ping-los, você precisa fazer vários pings a cada (de preferência em paralelo) para garantir que você está escolhendo um com genuinamente baixa latência em vez de pot sorte.

Além disso, você provavelmente quer alguma maneira de adicionar pesos a eles em última análise, quando os volumes de tráfego são muito elevados.

Finalmente, você iria querer alguma forma para marcar alguns deles como administrativamente para baixo (para manutenção) -. Mas talvez você possa fazer isso por ter seus entes quebrados apenas não anunciar que não estão actualmente disponíveis

Pinging não vai funcionar. A maioria dos clientes estaria por trás de uma porta de entrada e / ou firewall, e seus pacotes de ping não vai passar. Genehack disse que é melhor. Você precisa de carga do servidor de equilíbrio, e usando apenas a abordagem geográfica pode não ser a melhor maneira sempre ir sobre ele. É melhor jogar o dinheiro em alguém que é especializada em fornecer soluções SLB.

Ok então alguns pensamentos rápidos. I foi um dos fundadores da Envoy Digital - eles fazem inteligência IP geográfica. I deixou a empresa há alguns anos, mas cerca de 6 anos atrás nós construiu uma conjunto de produtos com Coyote Point Sistemas que fez exatamente essa funcionalidade - geográfica balanceamento de carga baseado. Claro, existem casos de ponta (o exemplo Taiwan / China mencionado neste segmento), que pode não funcionar automaticamente, mas o produto permitia ao usuário para determinar onde o tráfego de um país iria. Então, se você decidiu que Taiwan foi melhor servido por os EUA, seria empurrada dessa forma.

Infelizmente, a demanda para a solução não era tão grande como nós esperávamos e o produto tem, creio eu, foi descontinuado. Eu sugiro contacto Coyote Point e ver se eles podem fornecer uma solução equivalente para você. Se não, eu acho que eles vão ter algumas idéias sobre como ir sobre fazer o que você quer fazer.

Outra opção, dependendo do que você precisa para servir, é usar algo como serviço CloudFront da Amazon. Claro, se você precisar de clientes se conectem a um aplicativo e não arquivos estáticos, que não vai funcionar para você.

BTW, divulgação completa - Eu não sou apenas uma fundador da Digital Envoy, mas eu servem atualmente no conselho de Coyote Point.

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