Что такое многоуровневый кеш? - PullRequest
2 голосов
/ 22 декабря 2011

Недавно я натолкнулся на фразу «многоуровневый кеш», относящуюся к многоуровневым архитектурам, но без содержательного объяснения того, что такое кеш будет (или как его использовать).

Соответствующие поисковые запросы по данной фразе тоже ничего не дают. Моя интерпретация будет кешем, обслуживающим все уровни некоторого n-уровневого веб-приложения. Возможно распределенный кеш с одним узлом кеша на каждом уровне.

Сталкивался ли когда-либо этот термин с таким раньше? Я прав? Прочь?

Ответы [ 2 ]

2 голосов
/ 15 октября 2015

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

Учтите это;Каждое приложение будет иметь разные уровни, и на каждом уровне может быть кэширована различная форма информации.Срок действия каждого элемента кэша обычно истекает по одной из двух причин: либо истек период времени, либо обновлена ​​зависимость.

Для этого объяснения давайте представим, что у нас есть три слоя:

  1. Шаблоны (определения объектов)
  2. Объекты (полный кэш объектов)
  3. Блоки (частичные объекты / кэш блоков)

Каждый уровень зависит от его родителя, и мы определяем те, которые используют некоторую форму назначения зависимостей.Таким образом, блоки зависят от объектов, которые зависят от шаблонов.Если объект изменяется, любые зависимости в блоке будут удалены и обновлены;если шаблон будет изменен, любые объектные зависимости будут удалены, в свою очередь удалены все блоки, и все будут обновлены.

Есть несколько преимуществ, большое время истечения которых большое, поскольку зависимости гарантируют, что ресурсы ниже по течениюобновляются всякий раз, когда обновляются родители, поэтому вы не получите устаревшие кэшированные ресурсы.Одно только блочное кэширование - большая помощь, потому что, если не считать кэширования всей страницы (которое требует AJAX или Edge Side Include, чтобы избежать кэширования динамического содержимого), блоки будут ближайшими элементами к браузеру / интерфейсу конечных пользователей и могут сохранить нагрузку предварительной обработкициклы.

Сложность в многоуровневом кеше, подобном этому, заключается в том, что он, как правило, не может полагаться на чистку внешнего ключа на основе БД, то есть, если каждый уровень не равен 1: 1 по отношению к его родительскому(т.е. блок будет полагаться только на один объект, который опирается на один шаблон).Вам придется программно решить проблему удаления зависимых ресурсов.Вы можете сделать это с помощью хранимых процедур в БД или на уровне приложения, если хотите динамически работать с правилами удаления.

Надеюсь, что это кому-нибудь поможет:)


Edit: Я должен добавить, что любой из этих уровней может быть кластеризован, защищен или иным образом в масштабируемой среде, поэтому эта модель работает как в малых, так и в больших средах.

1 голос
/ 11 января 2012

После нескольких недель игры с EhCache все еще не совсем ясно, что они понимают под термином « многоуровневый ».Я буду следовать тому, что я интерпретирую как подразумеваемое значение;если в какой-то момент в будущем кто-нибудь придет и узнает иначе, пожалуйста, не стесняйтесь отвечать, и я удалю этот.на уровнях 1+ в архитектуре n-уровня .Это позволяет компонентам на нескольких уровнях получать доступ к одному и тому же кешу.В EhCache это достигается использованием архитектуры реплицированного или распределенного кэша в сочетании с простой ссылкой на одни и те же серверы кэша из нескольких уровней.

...