как отправить сетевые запросы на (географически) ближайший сервер - PullRequest
6 голосов
/ 24 июня 2009

Я Java-кодер и не очень хорошо знаю, как работают сети (кроме базовых соединений UDP / TCP)

Скажем, у меня есть серверы, работающие на машинах в США, Азии, Латинской Америке и Европе. Когда пользователь запрашивает услугу, я хочу, чтобы его запрос отправлялся на ближайший к нему сервер.

Могу ли я иметь один адрес: mycompany.com и каким-то образом получать запросы, перенаправленные на соответствующий сервер? Очевидно, когда кто-то заходит на cnn.com, они получают фотографии, видео и т. Д. С ближайшего к ним сервера. Честно говоря, я не понимаю, как это работает.

Кстати, мои серверы не обслуживают веб-страницы, они обслуживают другие службы, такие как данные фондового рынка ... на всякий случай, если это уместно.

Поскольку я программист, мне интересно знать, как это можно сделать в программном обеспечении. Поскольку это всего лишь пустое любопытство, ссылки на коммерческие продукты или услуги не очень помогут в понимании этой проблемы:)

Ответы [ 4 ]

0 голосов
/ 25 июня 2009

Один из подходов, как упоминал Джефф, это использование IP-адреса: http://en.wikipedia.org/wiki/Geolocation_software

По моему опыту, это точно для ближайшего относительно большого города (по крайней мере, в США). Есть несколько открытых баз данных, чтобы помочь в этом (см. Ссылку вики). Затем вы можете создавать теги изображений и ссылки для скачивания и тому подобное на основе этой информации.

Что касается поиска ближайшего сервера, я уверен, что вы можете придумать несколько способов сделать это. Например, если лучший возврат, который вы можете получить, это крупный город, вы можете найти этот город в списке Широта / Долгота и рассчитать ближайший сервер на основе этого.

0 голосов
/ 24 июня 2009

Другой подход был бы немного сложнее. Вместо того чтобы использовать сервер, который географически ближе всего к пользователю, вы можете использовать сервер с самой низкой задержкой для этого пользователя.

Более низкая задержка обеспечит более быструю скорость передачи, но при этом ее будет легче вычислить, чем географическое местоположение.

Для более подробного ознакомления с этой статьей о CDN (обратите внимание на раздел технологии):

Сеть доставки контента - Википедия

Это типы сетей, которые большие сайты используют для распространения своего контента по сети (популярным примером является Akamai). Как видите, вещи могут довольно быстро усложниться, если CDN имеют собственные проприетарные протоколы и т. Д.

0 голосов
/ 24 июня 2009

Обновление: я не видел заявления об отказе от коммерческих решений в конце оригинального сообщения. Я оставлю это для тех, кто может найти это интересным.

-

Взгляните на http://ultradns.com/. Подобная управляемая служба DNS может быть именно тем, что вам нужно для достижения того, что вы ищете.

Amazon.com, Forbes.com, Oracle, все используют их ...

Цитата от http://ultradns.com/solutions/traffic.html:

Решение UltraDNS Traffic Management предоставляет набор инструментов, позволяющих ИТ-администраторам определять конфигурации балансировки нагрузки для контент-серверов, находящихся в одном или нескольких географических местоположениях. Решение для управления трафиком управляет трафиком, направляемым на серверы, путем динамического изменения ответов на запросы DNS. Балансировка нагрузки выполняется на основе динамических показателей, полученных от хост-серверов на основе постоянного мониторинга. Решение UltraDNS Traffic Management не является единым приложением, но объединяет в себе возможности нескольких существующих систем UltraDNS для управления трафиком, управления сбоями сайтов и оптимизации систем веб-контента.

0 голосов
/ 24 июня 2009

Один из простых подходов заключается в том, чтобы посмотреть на первый байт (класс A) IP-адреса, входящий в UDP-запрос UDP, а затем основанный на том, что вы можете доставить правильный географически IP-адрес.

...