Распределённая система кеша ehcache для приложений любого уровня

    Сегодня я хотел бы рассказать об одном интересном проекте, который вам пригодится при проектировании и реализации сложных веб-приложений на платформе Java. Речь идёт о ehcache — универсальной системе распределённого кеширования для Java приложений и сервлетов. Это необычно небольшое приложение (честно, такого уровня системы, размером в несколько сотен Кб это редкость, при этом высокого качества), которое реализует кеш как динамический (в оперативной памяти), так и дисковый кеш, причём изначально спроектированное для работы с кешами большого объёма (порядка гигабайтов) и в распределённых системах.



    ehcache может реализовывать несколько различных стратегий кеширования, например — LFR (кеширование исходя из частоты использования) или FIFO, а также можно контролировать кеш на уровне отдельных объектов (задавая схему инвалидации объектов в кеше — по времени жизни или времени простоя). Кстати, не обошлось без поддержки стандартов — приложение поддерживает стандартный протокол работы с кешем — JSR107 JCACHE.

    Конечно, сразу написать приложение на все случаи жизни нельзя, поэтому разработчики ehcache пошли другим путём, обеспечив простую расширяемость своего детища и часть функций реализуются через сторонние компоненты (например, распределённые кеши), поэтому выбирая в качестве компонента своей системы ehcache вы можете быть уверены, что интеграция будет достаточно простая, гибкая и прозрачная.

    Одной из уникальных функций ehcache является «персистентный кеш», который позволяет хранить состояние объектов даже после перезагрузки виртуальной java-машины. Кроме этого, система кеширования поддерживает консоль управления JMX, что позволяет прозрачно интегрировать её в систему управления любым приложением, используя только стандартные протоколы и возможности. Именно такие, на первый взгляд как бы не самые существенные функции или стандарты и отличают просто приложения, разработки, нацеленные на удовлетворение, пусть и качественное, но конкретной задачи, зачастую конкретного разработчика или приложения, от действительно универсальных и готовых для использования в приложениях корпоративного уровня.

    Распределённое кеширование может применяться для обеспечения работы на кластере или в других распределённых схемах, используется встроенный (с версии 1.2) механизм RMI на основе протокола TCP (да-да, не UDP, об этом особо сказано в документации). Синхронизация и/или репликация кешей между узлами может быть как общей, так и локальной, для отдельных кешей по своей схеме, асинхронной или синхронной. Кстати, для большинства функциональности от приложения, использующего кеш, совершенно ничего не требуется, все зависит только от одного конфигурационного XML файла.

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

    Можно еще много чего рассказать о проекте, уточнить, что он прекрасно документирован, оттестирован и проверен на больших нагрузках и различными тестами, может работать с веб-приложениями на Tomсat или других серверах приложения, а также взаимодействовать (или входит в состав) уже известных и зарекомендовавших себя проектов высокого уровня: Alfresco (корпоративная система управления контентом), веб-фреймворк Cocoon, Spring, Hibernate. Но лучше всего зайти на сайт разработчиков, загрузить дистрибутив, размер которого просто смешной, как на сегодня, почитать документацию или посмотреть исходный код и начать думать — каким образом я могу применить новые возможности и существенно улучшить работу моего приложения? Уверен, у вас это получится!
    • +21
    • 21,6k
    • 8
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 8

      0
      Конкурент для memcached... что ж - время покажет какое решение получит большее распространение.
      Хотя тесную интеграцию ehcache с Java по-моему стоит считать скорее минусом, чем плюсом...
        0
        Действительно, простое, понятное, конфигурабельное решение для кэширования. Своего ничего не надо придумывать, бери да пользуйся.
        • НЛО прилетело и опубликовало эту надпись здесь
            0
            Хочу добавить, что на данный момент Terracotta уже не просто замена memcached, т.е. не просто система распределенного кеширования, но и tool для распределенного вычисления и т.д. Если вы посмотрите на примеры реализации, то очень удивитесь простоте мониторинга, развертывания и разработки (есть хороший плагин для Eclipse) приложений на нем.
            0
            Автор, спасибо за статью. Раньше он мне был знаком только как кеш 2-уровня (или 1-го?) для Hibernate. Но уже и тогда я удивлялся, как это "целая система кеширования" умещается в одну jar-ку из 3rd party libraries!? И при всем этом, требовалось добавить всего-то пару строчек в файл конфигурации.
              0
              Хмм, а могу я использовать это не на яве?
              И если могу, то как мне связать это с перлом и си?
              И есть ли сравнительные тесты мемкешед и этого?
                0
                можно, конечно, но достаточно нетривиально - например здесь кое-что можно почерпнуть. http://www.javaworld.com/javatips/jw-jav…

                лучше всего написать небольшого сетевого демона который будет прокси-сервером к пулу серверов ehcache
                0
                А вам не попадалось сравнение EhCache c OsCache?
                У нас в компании используется второй именно OsCache, в наших тестах двух-трёхлетней давности он показал себя лучше.

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

                Самое читаемое