Подсистема балансировки нагрузки - как записать один для пользовательского приложения?

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

Мой вопрос состоит в том, как делает балансирующие работы сетевой нагрузки, в целом?

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

Клиент соединяется с одной из машин подсистемы балансировки нагрузки, просит "free-to-connect-to" сервер и просто соединяется с нею?
Это - simpliest способ, которым я могу думать.
.. или, это использует подсистему балансировки нагрузки в качестве прокси (который подразумевает, что все NBS должно всегда подключаться к серверам приложений, и данные переданы через них)?

Это - больше общего вопроса. Как Вы сделали бы это?

Спасибо всем!

7
задан Martin Broadhurst 20 December 2010 в 21:17
поделиться

1 ответ

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

У Microsoft есть балансировка нагрузки, встроенная в Windows, которая основана на программном обеспечении. Она довольно хороша и проста в настройке.

Однако я буду рассматривать физический маршрут.

Здесь есть несколько алгоритмов, но основной - Round Robin с возможностью "липких" сессий. Sticky в данном случае означает, что балансировщик нагрузки будет пытаться вести историю клиентов и перенаправлять запросы от одного и того же клиента на одну и ту же машину. Это означает, что балансировщик нагрузки должен вести список клиентов и мест, куда он направил этих клиентов. В зависимости от размера кэша, клиенты могут выпасть из списка, и при последующих запросах они могут быть перенаправлены на другой сервер.

Round Robin - это довольно простая идея. Каждый поступивший запрос отправляется на следующий сервер в списке. Более сложные алгоритмы могут учитывать, сколько запросов поступает на определенный сервер и как долго эти запросы выполняются; затем они пытаются перераспределить новые запросы в пользу более быстрых серверов. Однако эта часть сложна.

13
ответ дан 6 December 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: