2013-03-05 1 views
1

Какие события будут активированы, когда балансировщик нагрузки предоставит другой машине серверу запрос.Жизненный цикл приложения ASP.NET с использованием балансировщика нагрузки

Скажите клиенту Запрос на страницу1 в первый раз, балансировщик нагрузки выделил Server1 для обслуживания запроса. Выполняется весь жизненный цикл приложения/страницы.

Теперь, если клиент A отправляет другой запрос на получение страницы2, но на этот раз, если балансировщик нагрузки выделил Server2 для обслуживания запроса, будет ли выполняться весь жизненный цикл приложения/страницы. Если нет, то какие события будут активированы в этом случае.

Переходя к конкретному вопросу: - Будет ли он снова выполнять session_start?

Отредактировано: Ну извините забыл упомянуть, что я использую Azure и не контроль, чтобы установить/изменить конфигурацию балансира. Более того, наши администраторы этого не сделают. Мы находимся на стадии разработки .

Также примечание: NOT Разрешено использовать сеансы proc. поэтому нельзя использовать sql azure для управления сеансами.

+0

Это зависит от конфигурации балансировки нагрузки. Я бы не стал полагаться на сеансы в ситуации балансировки нагрузки, если это возможно, чтобы улучшить масштабируемость – Dreamwalker

+0

@Dreamwalker, мы не можем изменить конфигурацию балансировки. какова альтернатива сессиям? мы не можем использовать файлы cookie, так как это не успокаивает –

+0

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

ответ

0

Windows Azure использует Round Robin схемы балансировки нагрузки, таким образом, в-прок сессия не является "NO GO" в Windows Azure (особенно облачные сервисы). В описанном выше сценарии, когда клиент запрашивает «page2», который обслуживается с «сервера 2», событие session_start будет запущено.

Возможно, вы захотите изучить функциональность в Windows Azure и использовать это как альтернативу управлению сеансом в процессе. Фактически, есть пользовательский поставщик состояния сеанса, который использует этот кеш: http://msdn.microsoft.com/en-us/library/windowsazure/gg185668.aspx.

+0

теперь есть роль кэша http://social.technet.microsoft.com/wiki/contents/articles/11829.how-to-use-worker-cache-role-in-windows-azure.aspx – Dreamwalker

0

Как уже говорилось, для того, чтобы сеанс для совместного использования в webfarms ключ машина должна быть общей для всех серверов http://msdn.microsoft.com/en-us/library/ff649308.aspx#paght000007_webfarmdeploymentconsiderations Asp.net сессии по умолчанию, находясь в прок не позволяет много масштабируемости (до тех пор, пока не» t перейти к sql-сеансу), но это можно легко изменить, чтобы быть вне proc, в результате чего сеанс был независимым от вашего приложения и решил проблему с несколькими серверами http://msdn.microsoft.com/en-us/library/ms972429.aspx.

Если вам нужно масштабировать и получать наличные деньги, подумайте о том, чтобы использовать сеанс StateServer (вне процесса) или что-то вроде Memcached.

Это означает, что жизненный цикл asp.net всегда выполняется полностью для каждого запроса независимо от того, сколько серверов находится в ферме. Но способ, которым работает сеанс asp.net, остается тем же (session_start будет всегда запускаться один раз за сеанс), какие изменения это его конфигурация (sql, stateserver и т. Д.). Have a look at this article, есть некоторая информация, которую вы найдете полезной.

+0

"Session_start будет всегда запускаться один раз за сеанс ", здесь, поскольку server2 не содержит никакой информации о сеансе clientA, значит, это снова вызовет Session_start? –

+0

Нужно ли устанавливать любые внешние dll для memchached? –

+0

@anilpurswani для memcache проверить их документацию. Вкратце о Session_start: с In-proc вы получили несколько запусков сессии. С sqlsession/stateserver вы получаете 1 сеанс и 1 Session_Start (сеанс хранится за пределами другого сервера, а серверы в вашей ферме будут его использовать). –

1

Эти слова происходят от самих Microsoft:

Microsoft не публикует алгоритмы балансировки нагрузки на Azure и не дает никаких гарантий, что это будет циклическое. Внутри нас знают, что это не так просто, как круглый робин.При разработке наилучших подходящих ресурсов учитывается множество факторов, которые учитывают ваш запрос. Например, следует учитывать сетевую близость , при условии, что машина имеет емкость до , чтобы выполнить этот запрос, чтобы вы могли видеть какое-то смещение в алгоритме в зависимости от местоположения служб. Есть несколько внутренних оптимизаций , включенных в алгоритмы, для использования знаний о внутренней структуре , производительности сети и доступной емкости, типа нагрузки балансировщик (программное обеспечение/аппаратное обеспечение) и т. Д. ... Цель балансировки нагрузки алгоритма заключается в том, чтобы направлять ваш запрос на доступный ресурс в наиболее эффективный способ. Команда продукта называет это «примерно раунд алгоритм robin».

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

+1

+1, одним из важных факторов является «keep-alive» - http://stackoverflow.com/a/12621531/57428 – sharptooth

 Смежные вопросы

  • Нет связанных вопросов^_^