2013-05-14 2 views
0

Я пытаюсь в полной мере понять, когда/как использовать понятие CloudBees о application session stores.Приложения Сессионные магазины на CloudBees

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

Итак, если мое понимание неверно или немного дезинформировано, пожалуйста, начните с исправления!

Предполагая, что я более или менее правильно, то у меня есть следующие вопросы:

  1. Как это производительность больно или память использования? Я бы предположил, что если каждому серверу приходится делиться одними и теми же кэшированными данными сеанса для всех пользователей, он будет иметь вид громоздких и, возможно, даже pricy ...
  2. Есть ли способ программно сформулировать состояния сеанса CRUD (то есть сбросить кеш, проверить его с помощью JMX и т. д.)?
  3. Может ли кто-нибудь предоставить конкретный прецедент для этой функции, так что я уверен, что я «понял»?

Заранее благодарен!

ответ

1

Сессионный магазин позволяет реплицировать HttpSession вокруг кластера, чтобы можно было масштабировать загрузку приложения на нескольких экземплярах без необходимости привязывать пользователя к определенному серверу (это другой вариант, который вы можете использовать: configure sticky session)

По своей природе сериализация данных HttpSession оказывает определенное влияние на производительность, но поскольку она использует сервер memcache, это минимально. Это также в основном зависит от количества и размера объектов, которые вы храните в сеансе пользователя. Кроме того, обратите внимание, что это требует, чтобы вы явно помещали объект в HttpSession после изменения любого атрибута, даже если объект был извлечен из сеанса - это общая проблема API с кластеризацией JavaEE.

Вы не можете программно запрашивать хранилище сеанса (вы могли с адекватным кэша памяти клиентского кода, но это не имеет особого смысла)

Два конкретных случая использования

  • приложения распределены на нескольких узлах, с сеансом, распределенным по кластеру, и без липкого сеанса, чтобы загрузка фактически распределялась для ВСЕХ пользователей.
  • Приложение te re reployployed не может понести пользовательский сеанс для потери, чтобы обеспечить непрерывный 0 простоя s е р в. версия N + 1 затем извлекает данные httpsession из версии N, должна быть совместима с точки зрения сериализации, но подключенный пользователь не заметит перераспределения и обновления версии.
Смежные вопросы