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

Ehcache as Distributed Cache

Фомарльно такой вид кеширования Ehcache называется Terracotta Distributed Ehcache.
Ehcache работает в среде Terracotta cluster.



Суть такого распределнного кеширования в следующем. На каждой ноде кластера уровня приложение, выполняется своя инстанция Ehcache, он выполняет функцию кеша уровня L1.
Эти инстанции Ehcache держат постоянное подключение к Terracotta cluster. Это отдельный кластер уровня кеш, который работает в парах серверов, каждая пара называется mirror group, парность гарантирует высокую доступность. Terracotta cluster - это кеш уровня L2, не смотря на то, что в кеше L1 сохраняются последние закешированные данные, они мгновенно также записываются в L2, когда происходит переполнение памяти под кеш на  L1, они удаляются, но при этом остаются в L2 до момента, когда истечет время жизни этого кеша.
Каждя пара кеш-кластера идентифицируется с помошью системы хеширования Ehcache, поэтому Ehcache по ключу знает в какой mirror group был записан кеш и куда нужно обращаться за ним. Когда какойто нод уровня приложение падает, то когда он подывается все его кеш-данные возобновляются из Terracotta cluster.

Как локальный Ehcache, так и каждый нод Terracotta cluster, имеет многоуровнывое деление памяти.
Client Tier(L1):
  • Heap memory.
  • Off-heap memoty (BigMemory). Direct byte buffer.
Server Tier(L2):
  • Heap memory.
  • Off-heap memoty (BigMemory). Direct byte buffer.
  • Disk storage. Это опционально. Служит это для случая когда оба нода mirror group закрешились, тогда кеши подымаются из дисков, которые подключены к этим серверам.

Различие между Terracotta Distributed Cache и Standalone or Replicated Cache

Некоторые главные отличия:
  • У distributed caches блокировка приходится на отдельные ключи, тогда как в одиночном - на сегмент ключей
  • У distributed caches все хранилища кешей распространяются
  • Только distributed caches можно сделать transactional caches ().
  • Одиночные caches загружаются очень быстро и не требуют bulk-loading API.
  • Distributed caches "cluster safe" для Hibernate (используются блокировки для записи в distributed caches). Нет необходимости в session.refresh() как для replicated caches.
  • Для distributed cache возможно экстримальное масштабирование благорадя использования множества чередующих(stripes - как RAID0) серверов.
  • Репликация требуют использовать CacheEventListeners.
  • Distributed caching может быть использован для создания clustered message queue, которая апдейтит базу данных, что дает связность данных в кластере.
  • Distributed caches предоставляет высокую доступность и долговечность Terracotta, благодаря таким полезным фичам как write-through (CacheWriter) queues ().
  • Когда используется read-through с write-behind, distributed caches могут добавлять согласованность для кешируемых данных по всему кластеру.

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

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