Управление сессиями для сайта с балансировкой нагрузки - PullRequest
1 голос
/ 09 декабря 2008

В настоящее время мы используем базу данных для хранения информации о состоянии (в отдельной таблице) для пользователя. Мы извлекаем эту информацию из базы данных каждый раз, когда пользователь обращается к приложению (отправляет запрос), и обновляем ее в базе данных после обработки запроса.

Это очень хорошо работает для нас во многих наших проектах и ​​очень проста в реализации, но это добавляет накладные расходы для вызова базы данных и сохранения информации о состоянии.

Существуют ли другие доступные способы, которые бы работали лучше в этом случае?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2008

Стандартно MS предлагает режим StateServer . Это позволяет хранить данные сеанса в памяти на одном сервере, совместно используемом одним или несколькими веб-серверами. В некоторых случаях (если ваше состояние сеанса SQL Server находится под значительной нагрузкой), это может дать вам импульс.

По умолчанию поставщик сеансов SQL Server выбирает и сохраняет элементы сеанса для каждого элемента. Если вы знаете, что ваш сеанс используется, и это кажется неэффективным (вы выбираете и сохраняете несколько элементов за запрос), вы можете реализовать на SQL Server собственный поставщик хранилища SessionState , который выбирает все элементы сеанса в начале запроса и сохраняет их все в конце запроса.

Другие ресурсы:

0 голосов
/ 09 декабря 2008

Есть несколько стратегий. Я надеюсь, что ваш сеанс является липким (то есть все время включен на одну и ту же машину). В этом случае вы можете кэшировать данные локально (в памяти) и использовать БД только для резервного копирования («только для записи»). Более того, существуют решения, такие как memcached , обеспечивающие распределенный кеш.

...