WebDev2030
@WebDev2030
Битриксоид до мозга и костей

Как найти ближайший сервер к клиенту?

Есть сайт который отдает файлы на скачивание, но сейчас уже ни канала ни мощностей не хватает, хотим распределить нагрузку и отдавать файлы с других серверов, но тоже наших. Как мы можем определить лучший для клиента сервер?
PS: CDN не подходит, нужно именно отдавать с наших серверов.
  • Вопрос задан
  • 1455 просмотров
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Тогда вам надо строить свой CDN. И как это организовать писали много раз. Это очень не просто, дорого и с огромным числом проблем.

А почему именно вам не подходит CDN?
Ответ написан
Jump
@Jump
Системный администратор со стажем.
Как мы можем определить лучший для клиента сервер?
Ну если вы все же не желаете использовать CDN, а хотите построить свое решение, то для начала нужно проанализировать где находятся ваши клиенты.
В африке, австралии, в сибири или на камчатке? И где их больше. Вряд ли они равномерно распределены по всей планете.
Зная это можно приблизительно подсчитать где выгоднее разместить сервера, и какой канал должен быть у серверов.
Узнавать где-кто находится по geoip, оно конечно не гарантированно, но для таких целей приемлемо.
Если нужно точнее - JS скрипт на странице который в фоновом режиме пробежится по списку ваших серверов и оценит качество канала.
Ответ написан
vvpoloskin
@vvpoloskin Куратор тега Компьютерные сети
Инженер связи
1) из логов собрать все IP-адреса обращающихся клиентов
2) сгруппировать их по операторам (по номерам BGP AS) и по количеству запросов
3) купить хостинги как можно ближе к этим операторам (идеально - провайдер хостинга тот же самый, что и в первых позициях списка на шаге 2)
4) все тяжелое разложить по хостингам, а при открытии клиентом странички генерировать название серверов исходя из того, какой хостинг к нему ближе (типа dc01.example.com)
5) DNS разбалансировать по странам
6) если мало, построить свою инфраструктуру ака CDN с блекджеком и... ну вы поняли
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы