Как работает сервер с балансировкой нагрузки? - PullRequest
1 голос
/ 05 июля 2010

Спасибо, что нашли время прочитать мои вопросы.

У меня есть некоторые базовые сомнения по поводу серверов с балансировкой нагрузки.

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

Вот как я предположил о балансировщике нагрузки.

  1. управлять и контролировать загрузку и делать все передачи запросов?

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

  3. Если запрос GET обрабатывается сервером и его сервер POST также должен управлять этим сервером. Право?Например: пользователь запрашивает страницу для редактирования, среда выполнения Asp.Net создаст набор viewstate (который имеет controlID и его значения) и поддерживается на стороне сервера и клиента.Когда мы нажимаем кнопку «Post», сервер проверяет состояние просмотра и пропускает его на сервер и выполняет другую обработку.

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

Ответы [ 2 ]

0 голосов
/ 05 июля 2010

У меня есть несколько ответов для вас.

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

Я думаю, что это может ответить на ваш третий и, возможно, даже на второй вопрос.

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

0 голосов
/ 05 июля 2010

Если вы используете балансировку нагрузки, встроенную в Windows, есть несколько вариантов распределения нагрузки.Серверы поддерживают связь друг с другом и организуют нагрузку между собой.

Наиболее масштабируемый вариант - это равномерное распределение запросов по всем серверам.Это означает, что каждый запрос может в конечном итоге обрабатываться другим сервером, поэтому обычной практикой является использование «липких сессий».Они привязаны к IP-адресу пользователя, и убедитесь, что все запросы от одного и того же пользователя направляются на один и тот же сервер.

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

Если вы обнаружили, что состояние сеанса находится вне процесса (например, сервер состояний или сервер SQL), вы можете обработать любой запрос на любом сервере.Viewstate позволяет серверу воссоздать большую часть данных, необходимых для создания страницы.

...