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

Можно оптимизировать затраты используя метод «Двух случайных выборов»:

  1. Выбираем два любых узла
  2. Узнаем их загруженность, а не загруженность всех узлов — вот где экономия.
  3. Выбираем наименее загруженный из двух

В оригинальной статье доказано, что на практике этот метод является оптимальным.

Другие примеры использования этого метода:

  1. При хэшировании – равномерное распределение элементов между списками содержащими коллизии
  2. Равномерное использование распределенной памяти
  3. Избегание перегрузок сети при маршрутизации в виртуальных сетях

some-tldrs-ru

Краткие пересказы статей (про технологии, но не только), чтобы не тратить время на лонгриды. Подписывайся и получай выжимку пользы!

Michael Spector

Written by

some-tldrs-ru

Краткие пересказы статей (про технологии, но не только), чтобы не тратить время на лонгриды. Подписывайся и получай выжимку пользы!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade