Опубликован: 23.05.2008 | Доступ: свободный | Студентов: 1566 / 391 | Оценка: 4.80 / 4.10 | Длительность: 15:29:00
Специальности: Программист
Лекция 9:

Балансировка нагрузки в распределенных системах

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >

Мультиагентный подход к решению задачи балансировки

Распределенные веб-сервисы

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

Для реализации высокопроизводительных и надежных веб-серверов используют распределенные веб-серверы. Распределенные веб-серверы представляют собой набор веб-серверов – это продублированные ресурсы для одновременного предоставления сервисов многим клиентам. Входящие запросы могут быть распределены по серверам согласно определенным стратегиям распределения загрузки и поэтому эти запросы могут быть быстро обработаны. Распределенные веб-серверы могут быть организованны различным образом:

  • Они могут быть интегрированы в кластер веб-серверов, соединенных через локальную вычислительную сеть (ЛВС) чтобы действовать как один мощный веб-сервер.
  • Они могут использоваться в различных географических местах через глобальную вычислительную сеть (ГВС).

Распределенные веб-серверы обладают высокой степенью масштабируемости. Количество их может быть увеличено простым добавлением в нового сервера в локальную сеть.

Балансировка загрузки распределенных веб-сереров

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

Использование мобильных агентов

Наряду с традиционными подходами (парадигма обмена сообщениями) рассмотрим другой – мультиагентный подход.

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

Преимущества использования этого подхода в следующем:

  • Агенты могут разделить функциональность при проектировании веб-систем. В традиционном подходе балансировки загрузки, основывающемся на сообщениях, модули серверных сервисов смешивают основную функциональность веб-сервиса с поддержкой таких функций, как балансировка загрузки. Когда вводится новая политика балансировки загрузки, может понадобиться переписать серверный модуль. С другой стороны при использовании мобильных агентов функции поддержки могут быть отделены от сервисных модулей и реализованы по отдельности в мобильных агентах. Следовательно, подход, основывающий на мобильных агентах, является более гибким при включении новых политик балансировки загрузки для различных веб-серверных систем.
  • Мобильные агенты расходуют мало трафика. В подходах, основывающихся на передаче сообщений, веб-серверы должны периодически обмениваться сообщениями с информацией о загрузке для того, чтобы принимать решения по балансировке загрузки. Обмен сообщениями снижает пропускную способность веб-системы. Взаимодействие на месте использования устраняет прямой обмен сообщениями, происходящий между серверами в обоих направлениях. Следовательно, могут быть значительно уменьшены сетевой трафик и издержки на коммуникацию.
  • Мобильные агенты поддерживают асинхронные и автономные операции. Серверы могут запускать мобильных агентов, которые независимо путешествуют между серверами, попутно выполняя различные операции. Мобильный агент может выполнять алгоритмы, содержащие различные политики балансировки загрузки и принимать решения по распределению загрузки на лету, согласно текущим состояниям серверов.
  • Использование мобильных агентов повышает надежность веб-систем, поскольку они могут переносить клиентские запросы от неисправных серверов к активным (работающим).

Различные подходы к балансировке, основанные на технологии клиент-сервер

Рассмотрим различные подходы к балансировке нагрузки. Выделяют следующие категории:

  • клиентские;
  • основанные на DNS;
  • диспетчерские;
  • серверные.

Клиентский подход реализует выбор сервера на стороне клиента. Клиенты могут выбрать один из веб-серверов случайным образом или выбрать наиболее подходящий сервер, используя механизмы интеллектуального выбора. Браузер Netscape Navigator использует клиентский подход при доступе к своим сайтам. Когда пользователь просматривает домашнюю страницу Netscape, Navigator случайным образом выбирает один из серверов и направляет ему запрос пользователя. Случайный выбор не может гарантировать балансировку загрузки и доступность сервера. Интеллектуальный выбор сервера может быть реализован с использованием Java апплетов, запущенных на стороне клиента для определения состояния серверов и задержек в сети. В этом случае может быть выбран наиболее подходящий сервер и запрос отправлен именно ему. Недостаток данного подхода состоит в большой временной задержке, вызванной определением состояний серверов.

Подход, основанный на DNS – это решение на стороне системы. Сервер служба имен доменов – это механизм маршрутизации для распределенных веб-серверов. Он может выбрать один из веб-серверов для обработки запроса путем отображения унифицированного указателя информационного ресурса (URL УУИР) на IP адрес веб-сервера. Однако DNS-сервер может стать узким местом в процессе маршрутизации. Существуют программные продукты для распределения нагрузки между многими географически рассредоточенными серверами, в которых DNS-сервер определяет и доступность серверов, и временную задержку в сети для выбора подходящего сервера, использующего технологию клиент-сервер.

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

Другая схема: перенаправления пакетов – перенаправление на уровне HTTP. Здесь диспетчер распределяет входящие запросы по серверам через механизмы перенаправления, предоставляемые HTTP. Диспетчер может перенаправить запрос посылкой ответа клиента, при этом в заголовке ответа указан адрес сервера. В этом случае клиент еще раз отправляет запрос, но уже напрямую на сервер.

Серверный подход использует механизм двухуровневой диспетчеризации. DNS сервер первоначально определяет сервер, на который идет клиентский запрос. После этого каждый сервер может переопределить запрос к другому серверу. Это децентрализованная стратегия перераспределения загрузки, в которой всем серверам разрешено участие в процессе балансировки загрузки. Существует реализация этого подхода на основе веб-сервера Apache. Эта реализация позволяет произвести однородное перераспределение HTTP запросов от перегруженных серверов к малоиспользуемым. Запрос передается по цепочке функций принятия решений, называемых функциями-кандидатами. Каждая функция-кандидат переупорядочивает набор доступных серверов и выбирает метод перераспределения запроса (HTTP перенаправление или через HTTP-прокси), основываясь на информации о ресурсах.

Мультиагентный подход к балансировке

Мобильные агенты используются для поддержки балансировки загрузки в параллельных и распределенных вычислениях. Рассмотрим кратко несколько проектов.

Проект Traveller

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

Проект Messengers

MESSENGERS – это система для распределенных вычислений общего назначения, основанная на мобильных агентах. Она поддерживает балансировку загрузки и динамическое использование ресурсов. Она используется для реализации распределенных приложений в модели главный-подчиненный и параллельных приложения типа перемножения матриц.

Проект Flash

FLASH – это программный продукт для создания распределенных приложений с балансированием загрузки в гетерогенных кластерных системах. Он поддерживает перемещение подзаданий параллельного приложения мобильным агентам.

< Лекция 8 || Лекция 9: 1234 || Лекция 10 >
Дмитрий Полянский
Дмитрий Полянский
Ольга Космодемьянская
Ольга Космодемьянская

Я прошла курс "Распределенные системы и алгоритмы". Сдала экзамен экстерном и получила диплом. Вопрос: можно ли после завершения теста посмотреть все вопросы, которые были на экзамене и все варианты ответов? Мне это необходимо для отчета преподавателю в моем ВУЗе. Заранее спасибо!