2012-04-03 1 views
8

Я пытаюсь найти, как реализовать распределенное кэширование для приложений.Возможно ли реализовать распределенное кэширование с использованием Ehcache без Terracotta Enterprise Suite?

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

ответ

2

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

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

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

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

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

Хотя, только Terracotta кластеризация принесет вам HA и такие как гарантии консистенции и т. д. ...

+1

Я попытался использовать Ehcache с Terracotta OSS, но не смог :( У меня есть два узла на отдельных серверах (A, B). У каждого узла есть собственный ehcache.xml (CM). Каждый CM содержит и иметь один кэш с именем TestCache с внутри. Хорошо, приложение «A» помещает элемент в кеш. Теперь, если «A» будет запрошен снова - он вернет кешированный элемент успешно, но «B» пропустит cache: Как я вижу в dev-console - Terracotta понимает, что это обычный менеджер кэша, а кеш также распространен для обоих приложений. (Причина, что он показывает хиты и промахи) Нужно ли мне делиться кэшами вручную? – Gadget

+0

Я имею в виду, мне нужно установить некоторые дополнительные конфигурации в tc-config.xml или ehcache.xml? Во всех примерах используется элемент «root», используемый для «совместного использования» менеджеров кэша. Но у меня нет никаких полей cacheManager в коде. Все описано только внутри ehcache.xml. Кроме того, в tc-config.xml есть настройка «инструментальных классов». Нужно ли перечислять все классы кешированных объектов вручную? Странно, если так, потому что я надеюсь, что ehcache.xml должно быть достаточно. – Gadget

+0

добавление элемента terracottaConfig в ehcache, указывающего на сервер Terracotta, и добавление элемента терракоты к каждому кешу, который вы хотите сгруппировать, должно быть достаточным для начала работы.Вы уверены, что правильный xml-файл подбирается? –

0

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

PS: Я работаю Hazelcast

+0

Hazelcast Enterprise (не бесплатно, для денег) требуется для репликации WAN. – AlexS

1

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

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

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