Распределенный постоянный кеш с использованием EHCache - PullRequest
1 голос
/ 28 апреля 2010

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

Наряду с этим, если кэш был постоянным, загрузится ли он из хранилища файлов, а затем загрузится из кластера кэша? По сути, я хочу:

  • Запускается кеш
  • Кэш загружает постоянные объекты из хранилища файлов

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

Поддержит ли это переход на другой метод распространения (например, терракотовый)?

Ответы [ 2 ]

3 голосов
/ 30 апреля 2010

Я бы взглянул на опции сквозного кэширования в EHCache. Как описано в ссылке, объединение кэша чтения и записи обеспечивает постоянство хранилища данных, определяемого пользователем.

Что дает вам Терракота - это последовательность (поэтому вам не нужно беспокоиться о разрешении конфликтов между участниками кластера). У вас есть возможность определить интерфейс к вашему собственному магазину (через CacheLoader и CacheWriter или просто позволить Terracotta сохранить ваши данные, но я получил смешанные сигналы от Terracotta и документацию о том, подходит ли TC для системы запись. Если ваши данные временные и могут быть снесены в любое время (например, для веб-сеансов), это может быть в порядке.

1 голос
/ 04 февраля 2011

Добавление элемента bootstrapCacheLoaderFactory вместе с cacheEventListenerFactory в кэш (который необходимо загружать с других узлов, когда он не работает, и реплицировать с другими узлами, если этот узел получил какие-либо обновления)

memoryStoreEvictionPolicy = "УКП" diskPersistent = "истина"
timeToLiveSeconds = "86400" maxElementsOnDisk = "1000">

...