Совместное использование сеанса через несколько запросов клиент-сервер и между несколькими серверами

Мой вопрос касается управления сеансом ASP.net. В текущем веб-приложении у нас есть «липкие сеансы» (пользователь всегда перенаправляется на сервер, с которым он начал разговаривать). Ниже представлена ​​моя проблема.

От одного из наших клиентов на наши серверы поступает огромное количество запросов. Каким-то образом запросы отправляются с 1 или максимум 2 IP-адресов. У нас есть 5 серверов для обслуживания этих запросов. Теперь проблема в том, что 1-2 сервера могут сильно получать обращения, в то время как другие серверы могут быть простаивающими, потому что закрепленные сеансы не позволяют обрабатывать запрос на serverB, на который первоначально ответил serverA < / сильный>

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

Я изложил свою проблему очень простыми словами. Любой указатель будет оценен по достоинству.


person Raj Chanchal    schedule 25.07.2012    source источник
comment
Вы пытались сохранить сеанс в базе данных? support.microsoft.com/kb/317604   -  person Efe Kaptan    schedule 25.07.2012
comment
Спасибо за ссылку. Я пройду через это.   -  person Raj Chanchal    schedule 25.07.2012
comment
Будет ли он сам загружать баланс между серверами? Я имею в виду, встроена ли эта функция в управление сеансами asp.net?   -  person Raj Chanchal    schedule 25.07.2012
comment
для режима сервера sql: чтобы настроить режим SQLServer для веб-фермы, в файле конфигурации для каждого веб-сервера установите атрибут sqlConnectionString элемента sessionState так, чтобы он указывал на ту же базу данных SQL Server. Путь к приложению ASP.NET в метабазе IIS должен быть идентичным на всех веб-серверах, которые совместно используют состояние сеанса в базе данных SQL Server. msdn.microsoft.com/en-us/library/ms178586.aspx   -  person Waqar Janjua    schedule 25.07.2012
comment
Учитывая, что я новичок в веб-разработке, ваш ответ избавит меня от некоторых проблем, с которыми я мог столкнуться на начальных этапах. Спасибо большое.   -  person Raj Chanchal    schedule 25.07.2012


Ответы (1)


Почему бы просто не сохранить состояние сеанса на сервере SQL?

person Jaime Torres    schedule 25.07.2012
comment
как выполняется балансировка нагрузки. Нужно ли мне программировать или asp.net сделает это за меня? - person Raj Chanchal; 25.07.2012
comment
Вы бы использовали свой обычный балансировщик нагрузки, но просто отключили закрепленные сеансы. Это позволяет равномерно распределять нагрузку на серверы и особенно подходит для вашей ситуации. Это связано с некоторыми накладными расходами, поскольку вы десериализуете и сериализуете состояние сеанса PER REQUEST с / на SQL-сервер, поэтому вам нужно определить, станет ли это невыносимым узким местом в вашем дизайне. - person Jaime Torres; 25.07.2012
comment
from msdn Чтобы использовать режим StateServer в веб-ферме, у вас должны быть одинаковые ключи шифрования, указанные в элементе machineKey вашей веб-конфигурации для всех приложений, которые являются частью веб-фермы. - person Waqar Janjua; 25.07.2012
comment
Спасибо, Торрес. Думаю, с вашим ответом и ссылкой я подхожу к решению. Это мне очень помогло. - person Raj Chanchal; 25.07.2012