Oracle Coherence — это продукт сетки данных в памяти , который также широко используется для репликации сеансов в кластере узлов сервера приложений. Он поддерживает широкий спектр серверов приложений, таких как WebLogic, WebSphere, Tomcat, JBoss и т. Д. Coherence * Web — это модуль управления сеансами (построенный поверх Coherence), используемый для управления информацией сеансов в кластерной среде.
Я бы порекомендовал придерживаться следующих рекомендаций относительно использования Coherence * Web & Coherence, особенно для управления сеансами (это также может быть применено в других сценариях Coherence):
Топология когерентного развертывания
Coherence поддерживает три режима развертывания:
- В процессе — на серверах приложений, на которых работает Coherence * Web, включена поддержка хранилища, так что хранилище сеансов HTTP совмещено с серверами приложений. Отдельные серверы кеша не используются для хранения HTTP-сессии.
- Вне процесса — серверы приложений, на которых запущен Coherence * Web, являются членами кластера Coherence с отключенным хранилищем. Отдельные серверы кеша используются для хранения HTTP-сессии.
- Вне процесса с 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 поддерживает пять различных типов кэша на основе четырех топологий кэша:
- Топология локального кэша : локальный кэш
- Топология с разделенным кешем: распределенный (или разделенный кэш)
- Топология реплицированного кэша: реплицированный кэш, оптимистичный кэш
- Гибридная топология (локальная + секционированная): около кэша
При выборе подходящего типа кэша вы можете использовать следующие простые рекомендации:
сценарий | Рекомендуемый тип кэша |
· Вам нужно быстрее читать и писать · Вам не нужна отказоустойчивость (осторожно: нет отказоустойчивости) |
Локальный кеш |
· Вам нужно быстрее читать с лучшей отказоустойчивостью · Запись будет сравнительно хорошей, но с задержкой при копировании обновленных данных · Обычно используется для хранения метаданных или данных конфигурации Примечание. Масштабирование (горизонтальное масштабирование) не может быть линейным. |
Реплицированный кэш |
· Вам нужно быстрее писать, но лучше отказоустойчивость · Чтение будет сравнительно быстрее, но зависит от того, будет ли оно читать с локального или удаленного узла |
Разделенный или Распределенный Кэш |
· Вам нужно быстрее писать, но лучше отказоустойчивость · Чтение будет сравнительно быстрее, но зависит от того, будет ли оно читать с локального или удаленного узла · Сродство повышает производительность приложений с интенсивным чтением при умеренных записях |
Рядом с кэшем (поддерживается разделенным кэшем) |
Выполнение производственного контрольного списка
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:
123
<
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