2009-06-02 5 views
5

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

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

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

+0

Я считаю, что вы можете настроить их как кластер в консоли WAS, нет? –

ответ

1

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

4

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

  1. сохраняющиеся в базе данных
  2. память-память переводов

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

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

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

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

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

+0

Спасибо за ответ ур dertoni.Мы используем довольно много данных сеанса - согласились с тем, что это плохая практика, но являясь приложением для обслуживания, это было так хорошо. Если нам удастся сохранить данные в базе данных, нам нужно будет восстановить их и повторно заполнить объекты приложения, чтобы повторно отобразить ожидаемую страницу, которая была бы проблемой здесь. – Subramanian

+0

Знаете ли вы, что websphere реплицирует данные сеанса, хотя в web.xml веб-приложения тег «distributable» отсутствует? http://stackoverflow.com/questions/26043080/does-websphere-replicate-the-session-although-the-web-xml-has-no-distributable-t –

0

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

2

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

Другое, что я, второй ответ, отвечу на dertoni.

+0

Сессионная близость была бы решением беднейших людей решить эту проблему в большинстве случаев. – Rick

1

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

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