2009-06-24 7 views
5

Ich bin ein Java-Coder und nicht sehr vertraut mit, wie Netzwerke funktionieren (außer Grunde UDP/TCP-Verbindungen)wie in Netzwerk-Anforderungen an den (geographisch) am nächsten Server

Sagen, ich habe laufen Server auf Maschinen versenden die USA, Asien, Lateinamerika und Europa. Wenn ein Benutzer einen Dienst anfordert, möchte ich, dass seine Anforderung an den Server gesendet wird, der ihnen am nächsten ist.

Ist es möglich für mich, eine Adresse zu haben: mycompany.com, und irgendwie Anfragen an den entsprechenden Server weitergeleitet bekommen? Wenn jemand zu cnn.com geht, erhält er die Bilder, Videos usw. von einem Server in der Nähe. Ehrlich gesagt, ich sehe nicht, wie das funktioniert.

Übrigens dienen meine Server keine Webseiten, sie dienen anderen Diensten wie Börsendaten ... nur für den Fall, dass das relevant ist.

Da ich ein Programmierer bin, interessiert mich, wie man es in Software machen würde. Da dies wenig mehr als eine Leerlauf Neugier ist, werden Zeiger auf kommerzielle Produkte oder Dienstleistungen nicht sehr hilfreich sein, um dieses Problem zu verstehen :)

Antwort

0

Ein einfacher Ansatz wäre, auf das erste Byte (Klasse A) der IP zu sehen Adresse in die UDP-DNS-Anfrage kommen und dann basierend darauf, dass Sie die richtige geo-located IP liefern könnten.

+0

Also, sagen wir, eine Anfrage kommt von Client C zu meinem "Proxy" -Server P, ich stelle fest, dass Server X am nächsten an C ist, also leite ich seine Anfrage an X weiter. Aber bedeutet das nicht, dass der gesamte Verkehr hereinkommt Proxy P, dann Router ich es zu nächsten Servern? Wenn P in New York ist, bedeutet das, dass Tokyo-Verkehr nach New York kommt, dann leitet NY jedes Paket zum nächsten Server in Peking weiter? Wie kann der Vertreter Tokio sagen, dass er mit Peking reden soll, um dann aus der Schleife zu kommen? – Shahbaz

+4

Wenn ein C zum ersten Mal eine Verbindung zu Ihrem Server herstellen möchte, führt er eine DNS-Abfrage an seinen lokalen DNS-Server aus. Der DNS-Server seines lokalen Internetdienstanbieters verfügt nicht über die IP-Adresse. Daher sendet das DNS des Internetdienstanbieters eine UDP-DNS-Anforderung an Ihren Nameserver. Nehmen Sie zur Vereinfachung an, dass das DNS seines ISP in seiner Nähe ist. Bestimmen Sie dann anhand der Quell-IP-Adresse der DNS-Abfrage, welche bestimmte IP für die DNS-Abfrage zurückgesendet werden soll. Dies ist eine einmalige Sache pro Sitzung. Ab diesem Zeitpunkt verbindet sich der Client direkt mit der IP. Keine Weiterleitung erforderlich. –

+0

Jeffs zweite Antwort (eine mit DNS-Info) ist am nächsten zu dem, was ich zu verstehen versuchte. Ich bekomme nicht alles, aber habe ein paar relevantere Keywords zu google. Ich kann allerdings keine nicht-Eltern Kommentare markieren. Vielen Dank! – Shahbaz

0

Ein anderer Ansatz wäre ein wenig komplizierter. Anstatt den Server zu verwenden, der dem Benutzer geografisch am nächsten ist, können Sie den Server mit der niedrigsten Latenz für diesen Benutzer verwenden.

Die niedrigere Latenz bietet schnellere Übertragungsgeschwindigkeiten und ist einfacher zu berechnen als der geografische Standort.

Für einen viel detaillierteren Blick, lesen Sie in diesem Artikel über CDNs out (die Aufmerksamkeit auf die Technologie Abschnitt bezahlen)

Content Delivery Network - Wikipedia

Dies sind die Arten von Netzwerken, die die großen Websites verwenden, um ihre Inhalte zu verbreiten über das Netz (Akamai ist ein beliebtes Beispiel). Wie Sie sehen können, können die Dinge ziemlich schnell ziemlich kompliziert werden, wenn CDNs ihre eigenen proprietären Protokolle haben, usw.

0

Update: Ich habe den Haftungsausschluss über kommerzielle Lösungen am Ende des ursprünglichen Beitrags nicht gesehen. Ich überlasse das für diejenigen, die es von Interesse finden könnten.

-

Werfen Sie einen Blick auf http://ultradns.com/. Ein gemanagter DNS-Dienst wie dieser kann genau das sein, was Sie brauchen, um das zu erreichen, wonach Sie suchen.

Amazon.com, Forbes.com, Oracle, alle sie nutzen ...

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

UltraDNS Traffic Management-Lösung eine Reihe von Werkzeugen bietet erlaubt IT-Administratoren Load Balancing definieren Konfigurationen für Content-Server mit einem oder mehreren geografischen Standorten. Die Traffic Management Solution verwaltet den Datenverkehr zu den Servern, indem dynamisch die Antworten auf DNS-Anfragen geändert werden. Der Lastenausgleich wird basierend auf dynamischen Metriken durchgeführt, die von den Host-Servern auf einer kontinuierlichen Überwachungsbasis erhalten werden.Die UltraDNS Traffic Management-Lösung ist keine einzelne Anwendung, sondern kombiniert die Funktionen mehrerer bestehender UltraDNS-Systeme zur Steuerung des Datenverkehrs, zur Verwaltung von Standortfehlern und zur Optimierung von Web-Content-Systemen.

0

Ein Ansatz ist, wie Jeff erwähnt, mit Hilfe der IP-Adresse: http://en.wikipedia.org/wiki/Geolocation_software

In meiner Erfahrung, ist dies genau zur nächsten relativ großen Stadt (in den USA zumindest). Dazu gibt es mehrere offene Datenbanken (siehe Wiki-Link). Anschließend können Sie anhand dieser Informationen Image-Tags und Download-Links generieren.

Um den nächsten Server zu finden, bin ich sicher, dass Sie sich einige Möglichkeiten vorstellen können. Zum Beispiel, wenn die beste Rendite, die Sie erhalten können, eine Großstadt ist, können Sie diese Stadt in einer Liste von Breiten-/Längengraden suchen und daraus den nächsten Server berechnen.