Высокая доступность ASP.NET MVC
При создании приложения ASP.NET MVC с целью обеспечения высокой доступности рекомендуется ли сохранять состояние сеанса на SQL Server, если сервер состояний недоступен?
2 ответа
Дело в том, что у вас есть 2-3 веб-сервера, которые вы упомянули в комментарии к ответу Крейгса.
Одним из способов является использование SQL-сервера sessionstate, у которого есть свои проблемы http://idunno.org/articles/277.aspx.
Если у вас есть этот SQL-сервер, я был бы осторожен, потому что БД для сеансового состояния будет сильно загружать его. Каждый запрос напишу в БД.
Мы используем 2 веб-сервера и Loadbalancer, который имеет липкие сессии. Если ваш первый запрос заканчивается на сервере 1, то все ваши запросы обрабатываются сервером 1. (Это немного сложнее, но вы поняли идею.)
Это не всегда может быть лучшим решением, но по крайней мере на нашем сайте (это магазин, где пользователь обычно остается 20-30 минут), он работает хорошо. Мы используем только маленький SessionState и храним большинство профильных вещей, хранящихся в ProfileSystem. Но я полагаю, что ProfileSystem также потерпит неудачу, если запросы будут отправляться на разные серверы.
Вместо этого я бы предложил AppFabric Caching (fka Velocity).