ASP.Net балансировка нагрузки - PullRequest
6 голосов
/ 28 июля 2010

Я работаю на asp.net (новичок) и пытаюсь понять, что означает «балансировка нагрузки» для веб-сайта.Веб-сайт будет использоваться несколькими пользователями и ресурсами (база данных, веб-сервис, ...).

Если бы кто-нибудь мог помочь мне понять концепцию баланса нагрузки для сайта asp.net, я был бы очень признателен.
Спасибо.

Ответы [ 8 ]

4 голосов
/ 28 июля 2010

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

Если вы внедрите свою систему asp.net с помощью управления состоянием сеанса вне процесса или в режиме sql-server-mode, это даст вам дополнительную гибкость позже, если вы решите ввести балансировщик нагрузки для ваша развернутая система:

  1. Ваш балансировщик нагрузки не должен обрабатывать сходство сессий. Как упомянуто выше, все современные балансировщики нагрузки справляются с этим, так что в любом случае это незначительное соображение.
  2. Web-сады (своего рода IIS / серверный балансировщик нагрузки) ТРЕБУЕТ использовать управление состоянием сеанса вне процесса или в режиме sql-server-mode. Поэтому, если ваша система уже настроена таким образом, вы на шаг приблизитесь к возможности использования веб-садов.
1 голос
/ 28 июля 2010

Что это такое? Балансировка нагрузки означает просто распределение рабочей нагрузки между двумя или более компьютерами.Как концепция, она не уникальна для asp.net.Хотя наличие отдельных компьютеров для вашей базы данных и веб-сервера можно назвать «балансировкой нагрузки», это чаще всего относится к использованию нескольких компьютеров для выполнения одной роли, например, к наличию нескольких веб-серверов.

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

0 голосов
/ 11 июля 2013

точное решение - сохранить сеанс в SQL Server с хранимой процедурой. Чтобы прочитать сеанс вызова 'SessionCheck' хранимой процедуры.

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

В типичном сценарии веб-сервера / базы данных почти всегда гарантируется, что БД сначала загрузит машину.Это связано с тем, что для хранения данных требуется больше ресурсов.Прежде чем вы начнете смотреть на балансировку нагрузки вашего веб-сервера, вам нужно подумать о том, как сбалансировать нагрузку базы данных.

Распределение одной базы данных по нескольким серверам намного сложнее, чем балансировка нагрузки веб-сервера.Одним из методов, которые можно использовать, является sharding (или горизонтальное разбиение).Здесь некоторые записи хранятся на одном сервере, а другие - на другом.Например, записи с идентификатором 1-900000 находятся на сервере 1, а записи 900001 - на сервере 2.

По сравнению с балансировкой нагрузки на БД распределение нагрузки между несколькими серверами ASP.NET не слишком сложное.Большинство проблем сеанса можно легко устранить, используя сеанс вне процесса и / или никогда не обращаясь напрямую к Application.Cache.Балансировка нагрузки на данные, с другой стороны, сложна и требует много планирования, проб и ошибок.В большинстве случаев для разговора с БД с балансировкой нагрузки необходимо использовать ORM, который его поддерживает (например, NHibernate), или собственный уровень доступа к данным.Причина в том, что вам нужно исключить установление соединения из кода, который использует базу данных, чтобы решение о том, с какой базой данных обращаться, обрабатывается в одном месте.

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

Я никогда не использовал его, но есть вариант IIS Маршрутизация запросов приложений .

Маршрутизация запросов приложений IIS (ARR) 2.0 позволяет администраторам веб-серверов, провайдерам хостинга,и сети доставки контента (CDN) для повышения масштабируемости и надежности веб-приложений за счет маршрутизации на основе правил, соответствия имен клиентов и хостов, балансировки нагрузки запросов к серверу HTTP и распределенного кэширования диска

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

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

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

Балансировка нагрузки не является специфичной для любого стека технологий, будь то asp.net, jsp и т. Д. Балансировка нагрузки заключается в распределении входящих запросов на веб-сайт более чем на один сервер. Обычно это делается с помощью программного или аппаратного балансировщика нагрузки. Балансировщик нагрузки находится перед двумя или более веб-серверами и делегирует входящий трафик. Хотя эта техника не ограничивается веб-серверами. Балансировка нагрузки

Наслаждайтесь!

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

Балансировка нагрузки в смысле программирования не применяется к ASP.NET; это относится к технике, которая пытается распределить нагрузку на сервер на две или более машины, а не на одну машину. Если у вас не будет много тысяч (миллионов?) Пользователей, вам, вероятно, не нужно беспокоиться об этом.

Проверьте статью Википедии для получения дополнительной информации.

...