Question

Je suis un codeur Java et je ne connais pas très bien le fonctionnement des réseaux (autres que les connexions UDP / TCP de base)

Supposons que des serveurs fonctionnent sur des machines situées aux États-Unis, en Asie, en Amérique latine et en Europe. Lorsqu'un utilisateur demande un service, je souhaite que sa demande soit dirigée vers le serveur le plus proche d'eux.

Puis-je avoir une seule adresse: mycompany.com et recevoir les demandes acheminées vers le serveur approprié? Apparemment, lorsque quelqu'un se rend sur cnn.com, il reçoit les images, vidéos, etc. d'un serveur proche de lui. Franchement, je ne vois pas comment ça marche.

Soit dit en passant, mes serveurs ne servent pas de pages Web, mais d’autres services tels que les données boursières .... juste au cas où cela serait pertinent.

Depuis que je suis programmeur, je voudrais savoir comment on le ferait dans un logiciel. Comme il ne s’agit que d’une curiosité oisive, les indicateurs de produits ou de services commerciaux ne seront pas très utiles pour comprendre ce problème:)

Était-ce utile?

La solution

Une approche simple consisterait à examiner le premier octet (classe A) de l’adresse IP entrant dans la requête DNS UDP, puis à vous assurer que vous pouvez fournir la bonne adresse IP géolocalisée.

Autres conseils

Une autre approche serait un peu plus compliquée. Au lieu d'utiliser le serveur le plus proche géographiquement de l'utilisateur, vous pouvez utiliser le serveur qui présente la latence la plus faible pour cet utilisateur.

La latence plus faible offrira des vitesses de transfert plus rapides tout en étant plus faciles à calculer que l'emplacement géographique.

Pour un aperçu beaucoup plus détaillé, consultez cet article sur les CDN (faites attention à la section Technologie):

Réseau de diffusion de contenu - Wikipedia

Il s’agit des types de réseaux que les grands sites utilisent pour distribuer leur contenu sur le réseau (Akamai en est un exemple populaire). Comme vous pouvez le constater, les choses peuvent devenir assez compliquées assez rapidement avec les CDN disposant de leurs propres protocoles propriétaires, etc.

Mise à jour: je n'ai pas vu l'avertissement concernant les solutions commerciales à la fin du message d'origine. Je laisserai cela en place à ceux qui le trouveront peut-être intéressant.

-

Consultez http://ultradns.com/ . Un site géré Un service DNS comme celui-ci peut être exactement ce dont vous avez besoin pour accomplir ce que vous recherchez.

Amazon.com, Forbes.com, Oracle, tous les utilisent ...

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

  

La solution UltraDNS Traffic Management fournit un ensemble d’outils permettant aux administrateurs informatiques de définir des configurations d’équilibrage de charge pour les serveurs de contenu résidant dans un ou plusieurs emplacements géographiques. La solution de gestion du trafic gère le trafic dirigé vers les serveurs en modifiant de manière dynamique les réponses aux demandes DNS. L'équilibrage de la charge est effectué sur la base de métriques dynamiques obtenues des serveurs hôtes sur une base de surveillance continue. La solution UltraDNS Traffic Management n’est pas une application unique, mais combine les capacités de plusieurs systèmes UltraDNS existants pour contrôler le trafic, gérer les défaillances de sites et optimiser les systèmes de contenu Web.

Comme Jeff l’a mentionné, l’une des méthodes consiste à utiliser l’adresse IP suivante: http: //en.wikipedia. org / wiki / Logiciel de géolocalisation

De mon point de vue, cela s’applique précisément à la ville relativement grande la plus proche (du moins aux États-Unis). Il existe plusieurs bases de données ouvertes pour aider à cela (voir le lien wiki). Ensuite, vous pouvez générer des balises d’image et des liens de téléchargement, entre autres, en fonction de ces informations.

En ce qui concerne la localisation du serveur le plus proche, je suis sûr que vous pouvez penser à plusieurs façons de le faire. Par exemple, si le meilleur retour que vous pouvez obtenir est une grande ville, vous pouvez chercher cette ville dans une liste de Latitude / Longitude et calculer le serveur le plus proche en fonction de cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top