Бесплатные калькуляторы
⌕ Поиск

Примеры запросов: процентыипотекаплощадь✓ 990 работающих калькуляторов

БАЛАНСИРОВКА · ОНЛАЙН

Номер сервера при циклическом распределении запросов

Калькулятор находит индекс сервера при циклическом распределении запросов: остаток от деления номера запроса на число серверов. Если серверы пронумерованы с нуля, запрос 1000 на семи серверах попадёт на сервер с индексом 6, а следующий — на сервер с индексом 0.

✓ Бесплатно⌁ С пояснением✦ Без регистрации
▦
КАЛЬКУЛЯТОР

Введите данные

Целое неотрицательное число до 1 000 000 000; первый запрос имеет номер 0.
Целое число от 1 (все запросы на один сервер) и больше.
✓ Исходные значения передаются серверу только для выполнения расчёта. Регистрация не нужна.
ВАШ РЕЗУЛЬТАТ✓ Вычислено

Остаток

Остаток6

«Копировать картинку» помещает изображение результата в буфер обмена без сохранения файла — его можно сразу вставить в мессенджер или документ. Картинка и PDF содержат ссылку на calc-calc.ru.

Был ли калькулятор полезен?Одно касание — и мы поймём, какие инструменты улучшать.
ПОДРОБНЫЙ РАЗБОР · ФОРМУЛЫ И ПРИМЕРЫ

Как узнать номер сервера при циклическом распределении запросов

Самая простая схема распределения нагрузки — циклическая: первый запрос идёт на первый сервер, второй на второй, а когда серверы закончились, очередь начинается заново. Балансировщик всегда помнит только номер запроса, но по нему можно сразу сказать, какой сервер сработает.

Ответ даёт остаток от деления номера запроса на число серверов. Дальше разобраны индексация с нуля и с единицы, примеры, ограничения алгоритма и ситуации, когда нужен другой подход.

Идея циклического распределения

В схеме round-robin серверы образуют кольцо. Каждый новый запрос передаётся следующему серверу, а после последнего снова первому. Никакой информации о нагрузке и состоянии серверов алгоритм не использует.

Благодаря простоте схема хорошо работает, когда серверы одинаковы по мощности, а запросы примерно одинаковы по стоимости.

Остаток от деления как индекс

Если запросы пронумерованы с нуля, а серверы — от 0 до N − 1, то индекс сервера равен остатку от деления номера запроса n на число серверов N. Любое n однозначно представляется в виде n = N × q + r, где остаток r лежит между 0 и N − 1.

Для чисел от 0 до N − 1 остаток совпадает с самим числом, потом отсчёт начинается заново. Поэтому запросы 0, 7, 14, 21 на семи серверах всегда попадают на сервер с индексом 0.

Примеры распределения запросов

Запрос №1000 на семи серверах: 1000 = 7 × 142 + 6, остаток 6, сервер с индексом 6 (седьмой по счёту). Запрос №1001 попадёт на сервер 0.

На трёх серверах десять первых запросов распределятся так: 0, 1, 2, 0, 1, 2, 0, 1, 2, 0. Сервер 0 получит четыре запроса, остальные по три, потому что десять не делится на три нацело.

Нумерация с нуля и с единицы

Люди нумеруют серверы «первый, второй, третий», а в программах индексы начинаются с нуля. Если запрос и сервер удобнее считать с единицы, вычтите единицу из номера запроса перед расчётом и прибавьте её к результату.

Ошибка «на единицу» в этих вычислениях встречается особенно часто, поэтому заранее договоритесь, какая нумерация принята в вашей системе, и проверьте на нескольких первых запросах.

Слабые места схемы

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

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

Практический пример распределения запросов

Допустим, пул состоит из пяти серверов, а запросы приходят с номерами от 0 до 99. Каждый сервер получит ровно 20 запросов, потому что 100 делится на 5 без остатка. Если же запросов 101 (номера от 0 до 100), нулевой сервер получит один лишний.

Такой подсчёт полезен при тестировании: можно заранее предсказать, какой сервер должен обработать контрольный запрос, и проверить правильность настроек балансировщика по журналу.

Границы страницы

Калькулятор считает идеальный порядок в пуле одинаковых серверов. Он не моделирует веса серверов, проверки доступности и привязку сессий и не заменяет настройки балансировщика.

Отрицательные номера запросов и нулевое число серверов лишены смысла и в расчёт не принимаются.

Формула расчёта

ОСНОВНАЯ ФОРМУЛА

индекс = n mod N

Проверенные примеры

Запрос 1000 на семи серверах

Пул из 7 серверов, нумерация с нуля. Какой сервер обработает запрос №1000?

1000 = 7 × 142 + 6, остаток 6, значит сервер с индексом 6.

Десять запросов на трёх серверах

Куда попадут запросы с номерами 0–9 при трёх серверах?

Индексы 0, 1, 2, 0, 1, 2, 0, 1, 2, 0: три сервера по очереди, десятый запрос снова на сервере 0.

Как пользоваться онлайн-калькулятором

  1. Введите порядковый номер запроса, начиная с нуля.
  2. Укажите число серверов в пуле.
  3. Нажмите «Вычислить» и получите индекс сервера от 0 до N − 1.
  4. Если нумерация серверов начинается с единицы, прибавьте единицу к результату.
ВОПРОСЫ И ОТВЕТЫ

Частые вопросы

Почему нумерация запросов идёт с нуля?

При нумерации с нуля остаток сразу совпадает с индексом сервера от 0 до N − 1. Если запросы нумеруются с единицы, вычтите единицу перед вводом.

Что будет, если серверов станет больше?

Остаток изменится почти у всех запросов, и они перераспределятся. Для кэшей и сессий это болезненно, поэтому применяют согласованное хеширование.

Подходит ли такое распределение, если запросы разной тяжести?

Оно равномерно по числу запросов, но не по нагрузке. Тяжёлые запросы могут попадать на один и тот же сервер, поэтому нужны взвешенные алгоритмы или учёт нагрузки.

Похожие калькуляторы

ПОДЕЛИТЬСЯ ИНСТРУМЕНТОМ

Встроить на свой сайт

Вставьте этот код в HTML-блок на своём сайте. Посетители смогут пользоваться калькулятором без перехода.

Прямая ссылка: https://calc-calc.ru/embed/calc_060230/

Предварительный просмотр