Round Robin
Алгоритм кругового обслуживания представляет собой перебор по круговому циклу: первый запрос передаётся одному серверу, затем следующий запрос передаётся другому и так до достижения последнего сервера, а затем всё начинается сначала.
Самой распространёной имплементацией этого алгоритма является Round Robin DNS. Любой DNS-сервер хранит пару «имя хоста — IP-адрес» для каждой машины в определённом домене. С каждым именем из списка можно ассоциировать несколько IP-адресов. Выглядит это примерно так:
www.example.ru 1.1.1.1
www.example.ru 2.2.2.2
www.example.ru 3.3.3.3
www.example.ru 4.4.4.4
DNS-сервер проходит по всем записям таблицы и отдаёт на каждый новый запрос следующий IP-адрес: например, на первый запрос — 1.1.1.1, на второй — 2.2.2.2, и так далее. В результате все серверы в кластере получают одинаковое количество запросов.
Плюсы:
• Независимость от протоколов высокого уровня. Round Robin использует любой протокол, в котором обращение к серверу идёт по имени • Не зависит от нагрузки на сервер. Кэширующие DNS-серверы помогут справиться с любым наплывом клиентов. • Не требует связи между серверами. Можно использовать для локальной и для глобальной балансировки • Практически нулевая стоимость. Достаточно добавить несколько записей в DNS.Минусы:
• При выполнении всех операций должно быть задействовано одинаковое количество ресурсов. В реальности эти условия в большинстве случаев невыполнимы. • Не учитывается количество активных подключений на данный момент времени • Не учитывает загруженность серверов в кластере. Если один из серверов загружен на 100%, а другие на 10-15%, то по умолчанию загруженный сервер будет получать столько же запросов сколько и остальные Weighted Round Robin
Как следует из названия, это усовершенствованная версия алгоритма Round Robin, в которой каждому серверу присваивается весовой коэффициент в соответствии с его производительностью. Это помогает распределить нагрузку более гибко: серверы с большим весом обрабатывают больше запросов, но надо понимать, что это не идеальное решение проблемы отказоустойчивости.
#engineering #dns #round_robin #балансировка_нагрузки