Централизованный кеш-сервер. (Ehcache или Hazelcast)

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

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

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

Мы думаем об использовании Ehcache/Terracotta или Hazelcast, в этом кеше хранятся наборы результатов, информация о блокировках и некоторые системные переменные.

Пожалуйста, предложите лучшее решение для кеша для нас.

2 ответа

Я, вероятно, не могу предложить лучшее решение для вас, но я постараюсь дать несколько идей:

Hazelcast: предлагает очень простую в использовании распределенную карту (и многое другое, на что стоит обратить внимание - распределенный SQL-запрос очень удобен):

Map<String, Object> map = Hazelcast.getMap("xxx");

и вы сделали. Работайте над картой, используя стандартные API. Настройка / настройка Hazelcast довольно проста (по сравнению с Ehcache/TC). Мониторинг веб-приложения также прост в использовании и полезен, но некоторые вещи отсутствуют. Производительность должна быть более чем достаточной для небольшого кластера (например, 2 ваших сервера).

Ehcache / Terracotta: добавит новый компонент инфраструктуры в вашу установку (Terracotta Server) - может быть недостатком. Использование этой настройки в моем опыте довольно интенсивно с точки зрения того, что нужно изучить и опробовать. Обещание - производительность и мониторинг на уровне предприятия.

Если у вас нет предельно высоких требований к производительности, я бы лично пошел на Hazelcast и избежал сложности Ehcache/TC.

Мы использовали централизованный сервер Memcached (в качестве кэша Hibernate 2-го уровня и других требований кэширования), и он хорошо работает для нас. Мы используем Memcached с клиентом XMemcached, и пока он работает без проблем.

Другие вопросы по тегам