Написание взвешенного алгоритма балансировки нагрузки - PullRequest
4 голосов
/ 07 октября 2010

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

Спасибо!

Ответы [ 2 ]

10 голосов
/ 07 октября 2010

Простой алгоритм здесь не так уж и сложен.

Допустим, у вас есть список серверов со следующими весами:

A 10
B 20
C 30

Там, где указан больший вес, он может обрабатывать больше трафика.

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

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

C - 10 / 30 = 0.33
B - 10 / 20 = 0.50
A - 10 / 10 = 1.00

Это означает, что следующие 5 запросов будут отправлены на сервер C. Шестой запрос будет отправлен либо в C, либо в В. 7-й запрос пойдет на тот, который не обработал 6-й.


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

Дальнейшие осложнения включают добавление липкости к сеансам. Это означает, что балансировщик должен проверять каждый запрос идентификатора сеанса и отслеживать, куда они отправились в прошлый раз.


В целом, если вы можете просто купить продукт у компании, которая уже делает это.

0 голосов
/ 08 октября 2010

Приложение балансировки Tomcat и учебное пособие здесь служат хорошими отправными точками.

...