Pull to refresh

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

Reading time3 min
Views28K
Сегодня я хотел бы рассказать об одном интересном проекте, который вам пригодится при проектировании и реализации сложных веб-приложений на платформе 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. Но лучше всего зайти на сайт разработчиков, загрузить дистрибутив, размер которого просто смешной, как на сегодня, почитать документацию или посмотреть исходный код и начать думать — каким образом я могу применить новые возможности и существенно улучшить работу моего приложения? Уверен, у вас это получится!
Tags:
Hubs:
+21
Comments8

Articles