Использование репликации сеанса Weblogic для своего рода базы данных в памяти

Мне нужно создать своего рода базу данных в памяти, я знаю, что могу использовать решения для управления данными в памяти, такие как EhCache и HazelCast, но я склонен не подключать их к своей системе и добиваться использования репликации сеанса Weblogic.

Ниже мой вопрос:

  • Since this is actually not a user session, can I create a session on application startup and then use Weblogic session replication feature to achieve session replication?
    • Or should I consider Weblogic application context replication and is it possible?
  • Обязательно ли мне иметь кластер Weblogic, чтобы использовать репликацию сеанса WL, или это можно сделать и без него?
  • Предположим, у меня есть 4 WL-сервера (работающих на разных серверах) и все в одном кластере. Если какой-либо узел/сервер получил данные и поместил их в сеанс, будет ли он автоматически реплицироваться на всех других узлах/серверах?
  • Предположим, я отключил 3 узла/сервер, после перезапуска этих узлов мои живые узлы будут автоматически передавать данные на начальные узлы?

person pjj    schedule 03.02.2016    source источник


Ответы (1)


Вы не должны не использовать веб-сеансы в качестве базы данных в памяти. Большинство баз данных в оперативной памяти позволяют точно настроить распределение данных по узлам. У них также есть поддержка транзакций и восстановления. Веб-сессии — это очень простая репликация объектов Java между узлами, и вам не следует даже хранить там важные данные. Основная цель репликации данных в объекте веб-сеанса состоит в том, чтобы в случае сбоя сервера сохранить пользователя на другом сервере и продолжить его работу, т.е. некоторый веб-интерфейс с отслеживанием состояния.

В зависимости от того, какую редакцию WebLogic вы используете (на основании какой лицензии она была приобретена), у вас уже может быть доступ к Coherence, решению Oracle In-memory Data Grid.

Обновите вопросы OP с правильными ответами ниже.

Поскольку на самом деле это не сеанс пользователя, могу ли я создать сеанс при запуске приложения, а затем использовать функцию репликации сеанса Weblogic для репликации сеанса?

  • Или я должен рассмотреть репликацию контекста приложения Weblogic и возможно ли это?

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

Обязательно ли мне иметь кластер Weblogic, чтобы использовать репликацию сеанса WL, или это можно сделать и без него?

Да, WebLogic Cluster необходим, если вы хотите репликацию сеанса. Существуют некоторые требования помимо использования кластера. См. главу документации 6 Отказоустойчивость и репликация в кластере в WLS 12.2. 1 Документы.

Предположим, у меня есть 4 WL-сервера (работающих на разных серверах) и все в одном кластере. Если какой-либо узел/сервер получил данные и поместил их в сеанс, будет ли он автоматически реплицироваться на всех других узлах/серверах?

Не на все серверы, только на некоторые. Дополнительные сведения об использовании групп репликации см. в документации. опции.

Предположим, я отключил 3 узла/сервер, после перезапуска этих узлов мои живые узлы будут автоматически передавать данные на начальные узлы?

Это не так просто, но короче, это не работает так, как вы хотели. Сеансы не реплицируются на все узлы в кластере WebLogic. Репликация выполняется на достаточное количество узлов (основной узел и дополнительный узел). Дополнительные сведения см. в документах по WLS для версии 12.2.1.

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

Но если вы действительно хотите использовать HTTP-сессию в качестве «базы данных в памяти», по крайней мере, убедитесь, что вы используете Coherence*Web в качестве механизма репликации в WebLogic.

person Bruno Borges    schedule 03.02.2016
comment
Я думаю, что веб-сессии будут поддерживать управление транзакциями и восстановление, верно? Мои данные не критичны, но я думаю, что единственная проблема, с которой я столкнусь, будет заключаться в создании кластеров для поддержки веб-сессий, верно? Кроме того, мне интересно, какое это имеет значение, если я храню важные данные в веб-сессиях, решения для управления данными в памяти, такие как EhCache, также делают то же самое, сохраняя вещи в памяти сервера, верно? Я был бы очень признателен, если бы вы могли предоставить свои материалы, нацеленные на каждый вопрос, - person pjj; 04.02.2016
comment
Я хочу сказать, что если у вас есть доступ к поддерживаемому и лицензированному решению сетки данных в памяти, зачем полагаться на то, что не предназначено для того, чтобы делать то, что вы хотите? - person Bruno Borges; 05.02.2016
comment
Это нормально, я это знаю, и я также упомянул в своем вопросе.. Это не отвечает на мой вопрос.. - person pjj; 06.02.2016