Алгоритмы за балансировщиками нагрузки? - PullRequest
4 голосов
/ 01 апреля 2010

Мне нужно изучить балансировщики нагрузки, такие как балансировка сетевой нагрузки, виртуальный сервер Linux, HAProxy, ... Есть кое-что под рукой, что мне нужно знать:

  • Какие алгоритмы / технологии используются в этих балансировщиках нагрузки? Какой самый популярный? Наиболее эффективный?

Я ожидаю, что эти алгоритмы / технологии не будут слишком сложными. Есть ли какие-то ресурсы, написанные о них?

Большое спасибо за вашу помощь.

Ответы [ 4 ]

3 голосов
/ 01 апреля 2010

Например, распределение нагрузки в Apache осуществляется модулем mod_proxy_balancer. Этот модуль поддерживает 3 алгоритма балансировки нагрузки:

  • Количество запросов
  • Подсчет взвешенного трафика
  • Подсчет ожидающих запросов

Для получения более подробной информации, посмотрите здесь: mod_proxy_balancer

2 голосов
/ 02 апреля 2010

Как правило, балансировка нагрузки заключается в отправке новых клиентских запросов на серверы, которые наименее заняты. В зависимости от запущенного приложения назначьте «коэффициент занятости» для каждого сервера: в основном число, отражающее одну / несколько точек интереса для вашего алгоритма балансировки нагрузки (подключенные клиенты, использование процессора / памяти и т. Д.), А затем во время выполнения выберите сервер с самым низким таким счетом. В основном, ЛЮБОЙ метод балансировки нагрузки основан на чем-то вроде этого:

  1. Round robin не реализует «счет занятости» как таковой, но назначает каждый последующий запрос следующему серверу в циклической очереди.
  2. Наименьшее количество подключений имеет свой счет = number_of_open_connections к серверу. Очевидно, что сервер с меньшим количеством подключений - лучший выбор.
  3. Случайное присвоение является особым случаем - вы принимаете неинформированное решение о загрузке сервера, но предполагаете, что функция имеет статистически равномерное распределение.
2 голосов
/ 01 апреля 2010

Не уверен, относится ли это к ошибке сервера или нет, но некоторые методы балансировки нагрузки:

  • Круглый Робин
  • Наименьшие соединения

Я использовал наименьшее количество соединений. Лучше всего было отправить человека на машину с наименьшей нагрузкой.

1 голос
/ 01 апреля 2010

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

Вот одна ссылка от Oracle:http://download -llnw.oracle.com / Docs / кд / E11035_01 / wls100 / кластер / load_balancing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...