Репликация сеансов между JVM в WebSphere

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

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

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


person Subramanian    schedule 02.06.2009    source источник
comment
Я полагаю, вы можете настроить их как кластер в консоли WAS, не так ли?   -  person matt b    schedule 02.06.2009


Ответы (5)


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

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

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

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

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

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

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

person dertoni    schedule 03.06.2009
comment
Дертони спасибо за ответ. Мы используем довольно много данных сеанса — согласитесь, что это плохая практика, но, поскольку это приложение для обслуживания, это до сих пор было хорошим случаем. Если нам случится сохранить данные в базе данных, нам придется извлечь их и повторно заполнить объекты приложения, чтобы повторно отобразить ожидаемую страницу, что было бы проблемой здесь. - person Subramanian; 10.06.2009
comment
Знаете ли вы, реплицирует ли websphere данные сеанса, хотя в web.xml веб-приложения тег «распространяемый» отсутствует? stackoverflow.com/questions/26043080/ - person David García González; 25.09.2014

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

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

person Basil Vandegriend    schedule 07.06.2009
comment
Сеансовая близость была бы решением этой проблемы для бедняков в большинстве случаев. - person Rick; 05.08.2009

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

person Salandur    schedule 02.06.2009

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

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

person mransley    schedule 13.07.2009

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

person Ron    schedule 05.06.2009