Масштабирование сервера состояний сеанса ASP.NET - PullRequest
5 голосов
/ 28 января 2009

Сценарий:

Веб-сайт размещен на трех серверах с использованием IIS на каждом.

Все три сервера кластеризованы с помощью программного обеспечения для балансировки сетевой нагрузки, которое поставляется с Windows Server 2003.

Все три сайта настроены для хранения состояния сеанса на отдельном сервере, который был обозначен как «сервер состояний».

Меня попросили увеличить "сервер состояний". Есть ли способ, чтобы я мог иметь более одного сервера состояний и синхронизировать состояние между ними, поэтому, если один из серверов состояния выйдет из строя, другие смогут обслуживать информацию о состоянии?

Ответы [ 4 ]

8 голосов
/ 28 января 2009

Мы используем Scale Out State Server для этого, где я работаю, и он прекрасно справляется со своей задачей и его очень просто настроить. Я понимаю, что Microsoft также работает над аналогичным продуктом под названием Velocity , но у меня нет никакого опыта с ним.

Единственным недостатком SOSS является то, что вы должны платить за него, но у меня не было ничего, кроме отличного опыта взаимодействия с их отделом продаж и поддержки. Если вы закончите лицензирование, сделайте мне одолжение и дайте им знать, что Дэниел из Gratis прислал вам;)

6 голосов
/ 28 января 2009

Я бы пошел на memcached. Вы можете настроить его на каждом из веб-серверов, а затем масштабировать его с каждым новым добавляемым веб-сервером. Я нашел пару клиентов в codeplex раньше.

3 голосов
/ 28 января 2009

Вы ищете технологию распределенного кэширования. В Microsoft Velocity есть примеры, опубликованные Microsoft для замены состояния сеанса ASP.NET по умолчанию на Velocity, которое можно распространять. Есть и другие провайдеры кэширования, такие как Memcache.

Редактировать: Обновляя этот ответ для получения информации, более актуальной для текущего времени, этот тип функциональности встроен в Windows Azure с продуктом AppFabric. Краткую информацию об этом можно посмотреть здесь: Виртуальный запуск Windows Server и Azure AppFabric 20 мая

0 голосов
/ 12 января 2011

База данных сеансов на сервере SQL может быть легко масштабирована с небольшими изменениями кода и конфигурации. Вы можете привязать сеансы asp.net к базе данных сеансов, и независимо от того, какой веб-сервер в вашей ферме обслуживает запрос, ваше сопоставление сервера состояний sql на основе идентификатора сеанса работает безупречно. Это, вероятно, один из лучших способов масштабирования состояния сеанса ASP.NET с использованием сервера SQL. Для получения дополнительной информации, прочитайте ссылку

Модель True Scaleout для состояния сеанса

...