понедельник, 25 февраля 2013 г.

Ehcache. Общие понятия

cache -- хранилище данных, которые могут понадобиться в ближайшем будущем, и доступ к ним может быть представлен очень быстро.
cache-hit -- условие когда мы обратились в кеш и записать там оказалась.
cache-miss -- условие когда мы обратились, но записи там не оказалось.
system-of-record (SOR) -- это место где мы в любом случае получим точно самое достоверное значение желаемой записи.

Большинство современных приложений развертываются на группе серверов паралельно для улучшения одновременного обслуживания  большого количества пользователей. Для такой среды Ehcache имеет две топологии:
1) Самостоятельная -- на конкретной ноде кеш не интересует дела его колег на соседних, и каждый работает сам. В такой топологии между нодами много несоответсвий в данных, она применима только если это для нас не критично.
2) Распределенный Ehcache (Distributed Cache) - данные кеша храняться в Terracotta Server Array, в подмасиве для каждой ноды, в этом случае если на одной ноде что-то было закешировано, то этим кешом смогут пользоваться все ноды. CacheManager-ы на разных JVM(и вообще нодах) могут разделять записи(элементы) между своими кешами.
3) Репликация - данные кеша сохраняются на ноде создателя записи и копируются, или инвалидируются, на других нодах кластера. Для этой топологии возможен только режим слабой связности, потому что он не предоставляет такой скорости распределения как второй.
Реплики могут выполняться следующими инструментами: RMI, JGroups, JMS, Cache Server(это вроде чисто ехкешовая штука).

Основные классы:

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

Вот методы получения менеджера:
CacheManager.newInstance(Configuration configuration)  создает новую инстанцию менеджера или возвращает, если уже существует с именем указанным в переданной конфигурации
CacheManager.create() Создает новую инстанцию без имени, или возвращает если уже она была создана до этого. Это тоже самое что и предыдущий метод без атрибута конфигурации.
CacheManager.create(Configuration configuration) строго идентично первому методу.
new CacheManager(Configuration configuration) создает инстанцию или выкидывает ексепшин, если уже есть такой менеджер с указанным в конфигурация имени, или конфигурационный обьект налл.

Ehcache - это интрефейс, который реализуют кеши менеджера. Состоит из имени и атрибутов. Содержит Element-ы. Кеш здесь аналогичен кеш-регионам в других системах кеширования.
Элементы сохраняются в MemotyStore, и если настроено, то в случае переполнения (лимиты указываются в настройках) сбрасывается на DiskStore.

Element - атомарный елемент в кеше. Он состоит из пары ключ-значение и записи доступов. Элементы добавляются в кеш и удаляются оттуда. Они также могут истекать по времени жизни и удаляться из кеша Эхкешем в зависимости от настроек.
В кеше может хранится как объекты реализующие Serializable так несерилируемые Object. Работа с ними буквально идетинтичная, кроме как получения кешируемого  или с помощью getObjectValue, или getKeyValue. Несерилизируемые объекты не могут попадать в DiskStore и реплицироваться, если происходит попытка то не выбрасывается исключение, а выводится в лог уровня DEBUG.



Комментариев нет:

Отправить комментарий