2009-06-24 10 views
5

Jestem programista Java i nie bardzo znane, jak działają sieci (inne niż podstawowe połączenia TCP/UDP)jak wysyłką do żądania sieciowe (geograficznie) najbliższego serwera

Say mam serwery uruchomione na komputerach w USA, Azji, Ameryki Łacińskiej i Europy. Gdy użytkownik żąda usługi, chcę, aby ich żądanie trafiło na serwer znajdujący się najbliżej nich.

Czy mogę mieć jeden adres: mojafirma.com i jakoś otrzymywać żądania kierowane na odpowiedni serwer? Najwyraźniej, gdy ktoś przejdzie na stronę cnn.com, otrzyma zdjęcia, filmy itp. Z najbliższego serwera. Szczerze mówiąc, nie rozumiem, jak to działa.

Nawiasem mówiąc, moje serwery nie obsługują stron internetowych, obsługują inne usługi, takie jak dane giełdowe .... tylko w przypadku, gdy jest to istotne.

Ponieważ jestem programistą, chciałbym wiedzieć, jak można to zrobić w oprogramowaniu. Ponieważ jest to tylko zwykła ciekawość, wskazówki do komercyjnych produktów lub usług nie będą zbyt pomocne w zrozumieniu tego problemu :)

Odpowiedz

0

Jednym z prostych sposobów byłoby przyjrzenie się pierwszemu bajtowi (klasa A) w IP adres przychodzący do żądania DNS UDP, a następnie na podstawie tego, że możesz dostarczyć właściwy adres IP z lokalizacją geograficzną.

+0

Cóż, załóżmy, że żądanie przychodzi od klienta C do mojego serwera "proxy" P, zauważam, że serwer X jest najbliższy C, więc przekazuję jego żądanie do X. Ale to nie oznacza, że ​​cały ruch przychodzi do proxy P, a następnie przekierowuję go do najbliższych serwerów? Jeśli P jest w Nowym Jorku, czy oznacza to, że ruch w Tokio dociera do Nowego Jorku, a następnie NY przekazuje każdy pakiet na najbliższy serwer w Pekinie? W jaki sposób pełnomocnik może przekazać Tokio rozmowę z Pekinem, a następnie wyjść z pętli? – Shahbaz

+4

Po raz pierwszy, gdy C chce połączyć się z serwerem, wykona zapytanie DNS do swojego lokalnego DNS. Serwer DNS jego lokalnego usługodawcy internetowego nie będzie miał adresu IP, więc serwer DNS usługodawcy internetowego prześle żądanie DNS UDP do serwera nazw. Dla uproszczenia załóżmy, że DNS jego ISP jest blisko niego. Następnie, bazując na źródłowym adresie IP zapytania DNS, zadecyduj, jaki konkretny adres IP będzie odsyłać dla jego zapytania DNS. To jest jednorazowa sesja. Od tego momentu klient łączy się bezpośrednio z adresem IP. Nie było potrzeby przekazywania. –

+0

Druga odpowiedź Jeffa (jedna z informacjami o DNS) jest najbliższa temu, co starałem się zrozumieć. Nie dostaję wszystkiego, ale mam więcej trafnych słów kluczowych do google. Najwyraźniej nie mogę jednak zgłaszać niepochodzących od rodziców komentarzy. Dzięki! – Shahbaz

0

Inne podejście byłoby nieco bardziej skomplikowane. Zamiast korzystać z serwera znajdującego się najbliżej użytkownika, możesz użyć serwera, który ma najmniejsze opóźnienie dla tego użytkownika.

Niższe opóźnienie zapewni szybsze prędkości przesyłania, a łatwiejsze do obliczenia niż położenie geograficzne.

o wiele bardziej szczegółowy wygląd, sprawdź ten artykuł na CDN (zwrócić uwagę na Sekcji Technologii):

Content Delivery Network - Wikipedia

Są to rodzaje sieciach dużych stron używa do rozpowszechniania ich treści przez sieć (Akamai jest popularnym przykładem). Jak widać, rzeczy mogą dość szybko się komplikować, gdy CDN mają własne zastrzeżone protokoły, itp.

0

Aktualizacja: nie widzę zastrzeżenia dotyczącego rozwiązań komercyjnych na końcu pierwotnego wpisu. Zostawię to dla tych, którzy mogą go znaleźć.

-

Spójrz na http://ultradns.com/. Tak zarządzana usługa DNS może być właśnie tym, czego potrzebujesz, aby osiągnąć to, czego szukasz.

Amazon.com, Forbes.com, Oracle, wszystkie z nich korzystać ...

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

rozwiązanie

UltraDNS Traffic Management oferuje zestaw narzędzi umożliwiający administratorom definiować równoważenie obciążenia konfiguracje dla serwerów treści znajdujących się w jednej lub wielu lokalizacjach geograficznych. Rozwiązanie zarządzania ruchem zarządza ruchem skierowanym do serwerów, dynamicznie zmieniając odpowiedzi na żądania DNS. Równoważenie obciążenia odbywa się w oparciu o dynamiczne metryki uzyskane z serwerów hosta przy ciągłym monitorowaniu.Rozwiązanie do zarządzania ruchem UltraDNS nie jest pojedynczą aplikacją, ale łączy możliwości kilku istniejących systemów UltraDNS w celu kontrolowania ruchu, zarządzania awarią witryny i optymalizacji systemów treści WWW.

0

Jednym ze sposobów jest, jak Jeff wspomniano, korzystając z adresu IP: http://en.wikipedia.org/wiki/Geolocation_software

w moim doświadczył, to precyzyjny z dokładnością do stosunkowo dużym mieście (w USA co najmniej). Istnieje kilka otwartych baz danych, które mogą w tym pomóc (patrz link wiki). Następnie możesz wygenerować tagi graficzne i linki do pobierania i takie na podstawie tych informacji.

Co do lokalizacji najbliższego serwera, jestem pewien, że możesz wymyślić kilka sposobów, aby to zrobić. Na przykład, jeśli najlepszym zwrotem, jaki możesz uzyskać, jest duże miasto, możesz wyszukać to miasto na liście Szerokość/długość geograficzna i obliczyć najbliższy serwer na podstawie tego.

Powiązane problemy