Java Caching в распределенной среде - PullRequest
2 голосов
/ 27 апреля 2010

Я должен создать простой реплицируемый кеш, использующий Java для внутренних целей, который будет использоваться в распределенной среде. Я видел, что oracle реализовал Replicated Cache Service .

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

  • Можно ли реализовать реплицированный кеш без основного кеша?

Ответы [ 5 ]

4 голосов
/ 10 сентября 2012

Вы можете оформить заказ Gigaspaces XAP , который является полностью транзакционным распределенным в сетке данных памяти, который поддерживает наряду со многими другими полностью реплицированные топологии.

Отказ от ответственности - я работаю на гигапространствах.

Эйтан

2 голосов
/ 14 марта 2011

Как насчет Java Caching System, JCS: http://jakarta.apache.org/jcs/

Я протестировал Lateral TCP Cache (с сервисом UDP Discovery) http://jakarta.apache.org/jcs/LateralTCPProperties.html

1 голос
/ 27 апреля 2010

Ehcache использует другую архитектуру с одноранговыми узлами и синхронизацию с использованием многоадресной рассылки Проверьте документацию

0 голосов
/ 26 сентября 2012

Я бы порекомендовал использовать MemCached.Имеется память вне процесса (на выделенных серверах кеша).Кроме того, сервер кэширования написан на C / C ++ и во время выполнения достигает хорошей производительности с низким использованием ЦП и хорошим использованием памяти.См .: http://memcached.org

Существует довольно хороший Java-клиент для подключения к серверу.См .: http://code.google.com/p/spymemcached

Относительно нескольких серверов кеша и механизма выбора, к какому серверу перейти ... вот часть из статьи ниже:

В конфигурации по умолчанию MemcachedКлиент использует очень простую логику, чтобы выбрать сервер для операции получения или установки.Когда вы делаете вызов get () или set (), клиент берет ключ кэша и вызывает свой метод hashCode (), чтобы получить целое число, например 11. Затем он берет это число и делит его на число доступных серверов Memcached, скажем,два.Затем он принимает значение остатка, который в данном случае равен 1.Запись в кэш будет отправлена ​​на сервер Memcached 1. Этот простой алгоритм гарантирует, что клиент Memcached на каждом из ваших серверов приложений всегда выбирает один и тот же сервер для данного ключа кэша.

И статья здесь:

Использование Memcached для производительности предприятия Java, часть 1 : архитектура и настройка http://www.javaworld.com/javaworld/jw-04-2012/120418-memcached-for-java-enterprise-performance.html

Использование Memcached для производительности предприятия Java, часть 2 :Веб-приложения на основе базы данных http://www.javaworld.com/javaworld/jw-05-2012/120515-memcached-for-java-enterprise-performance-2.html

0 голосов
/ 30 мая 2012

JCS должен выполнить эту работу за вас, поскольку он обладает хорошей гибкостью с точки зрения проектных конфигураций.Также привлекательной особенностью является ленивая загрузка данных, когда мы говорим о репликации, когда реплицируются только необходимые данные на основе запроса get для этого объекта.Это уменьшает объем памяти.

Пожалуйста, посмотрите Remote Cache Server с JCS на сайте apache JCS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...