Репликация сессий через JVM в WebSphere - PullRequest
5 голосов
/ 02 июня 2009

У нас настроена инфраструктура, в которой веб-серверы кластеризованы, а серверы приложений - нет. Веб-серверы направляют запрос на серверы приложений на основе политики циклического перебора.

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

Одним из подходов может быть использование базы данных - есть ли другие способы выполнения этой репликации сеанса?

Ответы [ 5 ]

4 голосов
/ 03 июня 2009

В WebSphere, по сути, существует два способа репликации данных сеанса:

  1. Сохранение в базе данных
  2. Передачи из памяти в память

Какой из них подходит для ваших нужд, сильно зависит от сценария вашего приложения:

Насколько важно сохранение данных сеанса, когда все ваши серверы приложений перестают работать? Сколько сессионных объектов у вас одновременно?

В БД вы можете хранить множество сессий без особых проблем, другой вариант - всегда вопрос о том, сколько памяти доступно.

Я бы пошел с базой данных, если у вас уже есть одна настройка, которую все равно используют все серверы приложений.

Вот ссылка на WebSphere Information Center с необходимыми подробностями.

2 голосов
/ 07 июня 2009

Одним из очевидных решений является включение кластеризации серверов приложений. Исходя из того, как вы сформулировали свой вопрос, я отказался от этой опции. Другой вариант - изменить маршрутизацию, используемую веб-серверами, для использования соответствия сеанса (запросы на один и тот же сеанс отправляются на один и тот же сервер приложений).

Кроме того, я бы ответил вторым дертони.

1 голос
/ 13 июля 2009

Существует два варианта кластеризации в WebSphere: репликация сеанса или база данных. Если у вас большие объекты сессий, лучше всего использовать базу данных, потому что она позволяет вам выгружать устаревшие сессии на диск. Если они затем представлены, их можно извлечь из базы данных. Если вы используете репликацию сеансов, тогда эти сеансы должны оставаться в памяти не только на вашем целевом сервере, но и на других серверах в группе репликации. При больших сеансах это может привести к нехватке памяти.

С обработкой сеанса базы данных он также очень настраиваемый и не заметно заметно в средах, в которых я его использовал.

1 голос
/ 02 июня 2009

Может быть, вы можете посмотреть на «терракота». это среда кэширования, которая может кэшировать сеансы и работать на отдельном сервере

0 голосов
/ 06 июня 2009

не забывайте согласованность оракула. ​​

...