Можно ли реализовать распределенное кэширование с помощью Ehcache без Terracotta Enterprise Suite?

Я пытаюсь найти, как реализовать распределенное кэширование для приложений.

Ehcache уже используется для кэширования в моем проекте, поэтому я ищу, как решить эту проблему с его помощью. Но, к сожалению, похоже, что для этого нужен Terracotta Enterprise Suite и он коммерческий. Не так ли? Есть ли другое решение, как использовать Ehcache для распределенного кэширования (RMI или что-то еще)?


person Gadget    schedule 03.04.2012    source источник


Ответы (3)


Вам не нужен корпоративный пакет terracotta для кластеризации экземпляров Ehcache. Таким образом, вы можете использовать кластеризацию с Ehcache и Terracotta уже сегодня, с чистым OSS:

http://www.ehcache.org/documentation/configuration/distributed-cache-configuration

Изменить: Срок действия этой ссылки истек. Ниже приведена новая ссылка, связанная с кластерным кешем http://www.ehcache.org/documentation/3.4/clustered-cache.html

Теперь, если вам нужна репликация, вы можете использовать другие механизмы, такие как RMI:

http://www.ehcache.org/documentation/replication/index

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

person Alex Snaps    schedule 03.04.2012
comment
Я пытался использовать Ehcache с Terracotta OSS, но потерпел неудачу :( У меня есть два узла на отдельных серверах (A, B). У каждого узла есть свой собственный файл ehcache.xml (CM). Каждый CM содержит ‹terracottaConfig .../› и имеет один кеш с именем TestCache с ‹terracotta/› внутри. Хорошо, приложение «А» поместило элемент в кеш. Теперь, если «А» будет запрошено снова, оно успешно вернет кешированный элемент. Но «Б» пропустит кеш. Как я вижу в dev-консоли - Terracotta понимает, что это общий Cache Manager, и кеш также общий для обоих приложений (потому что он показывает попадания и промахи) Нужно ли делиться кешем вручную? - person Gadget; 05.04.2012
comment
Я имею в виду, нужно ли мне устанавливать какие-то дополнительные настройки в tc-config.xml или в ehcache.xml? Во всех примерах корневой элемент используется для совместного использования менеджеров кеша. Но у меня нет полей cacheManager в коде. Все описано только внутри ehcache.xml. Кроме того, в tc-config.xml есть параметр «инструментальные классы». Нужно ли мне вручную перечислять все классы кэшированных объектов? Это выглядит странно, потому что я надеюсь, что ehcache.xml должно быть достаточно. - person Gadget; 05.04.2012
comment
Добавление элемента terracottaConfig в ehcache, указывающего на сервер Terracotta, и добавление элемента terracotta в каждый кеш, который вы хотите сгруппировать, должно быть достаточным для начала работы. Вы уверены, что загружается правильный xml-файл? - person Alex Snaps; 09.04.2012

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

PS: я работаю на Hazelcast

person Fuad Malikov    schedule 11.04.2012
comment
Для репликации WAN требуется Hazelcast Enterprise (не бесплатно, за деньги). - person AlexS; 08.09.2017

существуют разные способы реализации распределенного кеша с использованием механизма ehcache. Можно использовать RMI или Jgroups.

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

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

person Dhiraj    schedule 07.02.2017