Статьи

Рекомендации Oracle Coherence для управления сеансами (репликация) в среде кластерных серверов приложений

Oracle Coherence — это продукт сетки данных в памяти , который также широко используется для репликации сеансов в кластере узлов сервера приложений. Он поддерживает широкий спектр серверов приложений, таких как WebLogic, WebSphere, Tomcat, JBoss и т. Д. Coherence * Web — это модуль управления сеансами (построенный поверх Coherence), используемый для управления информацией сеансов в кластерной среде.

Я бы порекомендовал придерживаться следующих рекомендаций относительно использования Coherence * Web & Coherence, особенно для управления сеансами (это также может быть применено в других сценариях Coherence):

Топология когерентного развертывания

Coherence поддерживает три режима развертывания:

  1. В процессе — на серверах приложений, на которых работает Coherence * Web, включена поддержка хранилища, так что хранилище сеансов HTTP совмещено с серверами приложений. Отдельные серверы кеша не используются для хранения HTTP-сессии.
  2. Вне процесса — серверы приложений, на которых запущен Coherence * Web, являются членами кластера Coherence с отключенным хранилищем. Отдельные серверы кеша используются для хранения HTTP-сессии.
  3. Вне процесса с Coherence * Extend — серверы приложений, на которых работает Coherence * Web, не являются частью кластера Coherence; серверы приложений используют Coherence * Extend для подключения к кластеру Coherence, который содержит серверы кэша, используемые для хранения сеансов HTTP.

Рекомендация:

Если Coherence необходимо расширить свои границы за пределы основного CoMP Coherence TCMP (внутренний протокол, используемый Coherence), используйте Coherence * Extend, который поддерживает клиенты Java, .Net и C ++.

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

Для репликации сеансов совместное использование памяти (кучи) сервера приложений с Coherence с использованием внутрипроцессного развертывания создает надежность. Если использование памяти сервера приложений увеличится, это также повлияет на производительность Coherence и наоборот.

Убедитесь, что для внепроцессной конфигурации необходимо следующее: Узлы сервера приложений работают в режиме хранения отключен. Вам необходимо передать оба этих параметра командной строки (или с помощью файла переопределения Coherence) JVM сервера приложений:

1
2
Dtangosol.coherence.session.localstorage=false
Dtangosol.coherence.distributed.localstorage=false

Обратите внимание, что установка свойства хранилища сессии явно необходима, так как по умолчанию это «true» в «session-cache-config.xml»:

1
2
3
4
5
………………….
 
<local-storage system-property="tangosol.coherence.session.localstorage"
 
………………….

Выделенные узлы Coherence должны быть включены для хранения (в противном случае нет атрибутов для хранения атрибутов сеанса) и должны использовать файл «session-cache-config.xml» или файл пользовательской конфигурации кэша с настроенным в нем кэшем сеанса:

1
2
3
java –Xms512m -Xmx512m -cp /usr/local/coherence_3_6/lib/coherence.jar:/usr/local/coherence_3_6/lib/coherence-web-spi.war:/usr/local/coherence_3_6/lib/commons-logging-api.jar:/usr/local/coherence_3_6/lib/log4j-1.2.8.jar
 -Dtangosol.coherence.cacheconfig=../../../webapps/example/WEB-INF/classes/session-cache-config.xml -Dtangosol.coherence.log.level=6 -Dtangosol.coherence.ttl=2 -Dtangosol.coherence.log=log4j -Dtangosol.coherence.edition=EE
-Dtangosol.coherence.session.localstorage=true com.tangosol.net.DefaultCacheServer

Топология когерентного кэша

Coherence поддерживает пять различных типов кэша на основе четырех топологий кэша:

  1. Топология локального кэша : локальный кэш
  2. Топология с разделенным кешем: распределенный (или разделенный кэш)
  3. Топология реплицированного кэша: реплицированный кэш, оптимистичный кэш
  4. Гибридная топология (локальная + секционированная): около кэша

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

сценарий Рекомендуемый тип кэша
· Вам нужно быстрее читать и писать
· Вам не нужна отказоустойчивость (осторожно: нет отказоустойчивости)
Локальный кеш
· Вам нужно быстрее читать с лучшей отказоустойчивостью
· Запись будет сравнительно хорошей, но с задержкой при копировании обновленных данных
· Обычно используется для хранения метаданных или данных конфигурации

Примечание. Масштабирование (горизонтальное масштабирование) не может быть линейным.

Реплицированный кэш
· Вам нужно быстрее писать, но лучше отказоустойчивость
· Чтение будет сравнительно быстрее, но зависит от того, будет ли оно читать с локального или удаленного узла
Разделенный или Распределенный Кэш
· Вам нужно быстрее писать, но лучше отказоустойчивость
· Чтение будет сравнительно быстрее, но зависит от того, будет ли оно читать с локального или удаленного узла
· Сродство повышает производительность приложений с интенсивным чтением при умеренных записях
Рядом с кэшем (поддерживается разделенным кэшем)

Выполнение производственного контрольного списка

Coherence рекомендует выполнить список контрольных списков в производственной среде, чтобы убедиться, что среда и инфраструктура рекомендовали настройки / конфигурации, особенно в следующих областях:

  • Сеть:
    • Тест многоадресной рассылки: если вы используете многоадресную кластеризацию, этот тест должен убедиться, что конфигурация многоадресной рассылки правильная и работает правильно.
    • Тест дейтаграммы. Перед развертыванием приложения необходимо запустить его, чтобы убедиться, что в вашей сети нет потери пакетов. Обратите внимание, что в сети 1GbE вы должны использовать пакеты размером 100 МБ для тестирования, а минимальный (не средний) показатель успеха должен быть близок к 100% (~ 98-99%)
    • TTL — это очень важный параметр для многоадресной сети, обычно рекомендуемое значение 2-5 в производственной среде.
  • Настройки оборудования, ОС и JVM
  • Согласованные издания и режимы:
    • Излишне говорить, что режим Coherence должен быть PROD в производственной среде. Его необходимо указать в командной строке, поскольку файл конфигурации переопределения нельзя использовать для Edition & Mode.

      -Dtangosol.coherence.mode = ПРОД

    • По умолчанию Coherence работает в GE (Grid Edition), и очень важно использовать соответствующую версию (в соответствии с вашей лицензией и потребностями), чтобы указать правильную версию.

      -Dtangosol.coherence.edition = EE

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

Выполнение рекомендаций по настройке производительности

Coherence предлагает настроить для: ОС, сети, JVM и Coherence Network. Пожалуйста, обратитесь к руководству Coherence Performance Tuning (справочный раздел) для более подробной информации.

Включить JMX для мониторинга когерентности

Coherence обеспечивает поддержку OOTB для мониторинга на основе JMX своего кластера, узлов, кэшей и других объектов. Для работы в качестве менеджера нужен хотя бы один узел, а остальные узлы в кластере могут публиковать свою статистику с использованием JMX.

Для узла управления,

1
2
-Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true
-Dtangosol.coherence.management.jvm.all=false  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port= -Dcom.sun.management.jmxremote

Для других узлов вы можете просто удалить параметр командной строки «tangosol.coherence.management» . Кроме того, обратите внимание, что в вышеприведенном случае аутентификация JMX не включена (что необходимо защитить), а также необходимо указать порт JMX.

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

Хотя Coherence имеет собственный механизм ведения журнала, Log4J более выгоден с точки зрения ротации журналов и контроля соответствующих уровней журналирования.

Обратите внимание, что для уровня ведения журнала вы можете использовать как параметр Coherence Log Level (-Dtangosol.coherence.log.level), так и конфигурацию Log4J.

Выполните следующие действия, чтобы включить Log4J для Coherence :

  • Coherence не имеет библиотек log4j, поэтому вам нужно добавить следующие jar-файлы в classpath:
    а. Скопируйте «commons-logging-api.jar» и «log4j-1.2.8.jar» в папку / lib
  • Создайте / измените ваш XML-файл Log4J и поместите его в classpath вашей Coherence JVM.
  • Установите параметр командной строки (или используйте файл переопределения), чтобы указать значение параметра журнала как « log4j ».

Обратите внимание, что Coherence предполагает, что Log4J XML будет иметь имя регистратора как «Coherence», в противном случае вам нужно указать имя регистратора с помощью отдельного параметра «tangosol.coherence.log.logger».

Пример:

Cache Server Startup Script

1
2
3
JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY -Dtangosol.coherence.log.level=6 -Dtangosol.coherence.log=log4j -Dtangosol.coherence.log.logger=MyCoherence"
 
$JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar:$ "$COHERENCE_HOME/lib/commons-logging-api.jar:$ COHERENCE_HOME/lib/log4j-1.2.8.jar" com.tangosol.net.DefaultCacheServer $1

Log4J XML

1
2
3
4
5
6
7
8
9
......................
 
<logger name="MyCoherence">
 
<level value="3"/>
 
<appender-ref ref="CoherenceAppender"/>
 
....................

Просмотрите Coherence * Веб-контекстный параметр

Существует несколько параметров веб-контекста Coherence, которые необходимо настроить при установке Coherence * Web в веб-приложении, особенно следующие:

  • Согласованность включения-SessionContext
  • когерентности сеанса ID-длина
  • когерентности сеанса UrlEncode с поддержкой
  • когерентности сеанс поточно-замок
  • когерентность-липкие-сессий
  • когерентность-reaperdaemon-предположим, местонахождение
  • Согласованность включения-подозрительными-атрибуты

Примечание. Эти параметры настраиваются в web.xml и получают инструментарий при запуске утилиты веб-установки Coherence *.

Использование Coherence в качестве провайдера L2-кэша

Coherence также может использоваться в качестве поставщика L2-кэша для используемых сред ORM. Наличие Coherence в качестве кэша L2 позволяет также использовать кэширование на уровне предприятия для ваших кэшей ORM L2.

Чтобы настроить то же самое, вам нужно указать Coherence в качестве провайдера L2 Cache (особенно для Hibernate L2 Cache ):

  • Укажите Coherence в качестве поставщика L2-кэша в файле конфигурации Hibernate:
    1
    2
    3
    <prop key="hibernate.cache.provider_class">
    com.tangosol.coherence.hibernate.CoherenceCacheProvider
    </prop>
  • Конфигурация для Hibernate L2 Cache загружается на основе следующего параметра. Файл конфигурации L2-кэша по умолчанию уже существует.
    1
    -Dtangosol.coherence.hibernate.cacheconfig = /hibernate-cache-config.xml

Ресурсы

Руководство пользователя Coherence: http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/toc.htm