|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Привет друзья! Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него устаревшие или изменённые записи. Вопрос - сложный. И в общем случае еще нерешённый для 90% юзкейсов что я видел. Особенно для реляционных БД. Вобщем - отпишите ваш опыт (позитивный и негативный) Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 14:56 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Хеш-теги по теме (пишу навскидку по памяти могу что-то забыть поэтому прошу дополнять): Java: EhCache, InfiniSpan, @EnableCaching (Spring) General: Memcached, Redis Servers: nginx HTTP: Expires, Cache-Control, Age Из Оракловых технологий: OCI Client Caching Алгоритмы: LRU, 2Q, ARC Теория: ? Х.З ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2019, 16:23 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
maytonПривет друзья! Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него устаревшие или изменённые записи. У нас в итоге свой костылище написали :) 1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш. 2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша Можно пользоваться . Заодно проверьте на JDK11 - всё никак не доберусь... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2019, 11:22 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey TominmaytonПривет друзья! Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него устаревшие или изменённые записи. У нас в итоге свой костылище написали :) 1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш. 2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша Можно пользоваться . Заодно проверьте на JDK11 - всё никак не доберусь... Круто вам. А сколько времени (мс) прибл. занимала чистка кеша? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2019, 11:40 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
mayton Хеш-теги по теме (пишу навскидку по памяти могу что-то забыть поэтому прошу дополнять): Java: EhCache, InfiniSpan, @EnableCaching (Spring) General: Memcached, Redis Servers: nginx HTTP: Expires, Cache-Control, Age Из Оракловых технологий: OCI Client Caching Алгоритмы: LRU, 2Q, ARC Теория: ? Х.З Еще сам себе добавлю. HTTP: Expires, Cache-Control, Age, Etag ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2019, 11:48 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
maytonAlexey Tominпропущено... У нас в итоге свой костылище написали :) 1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш. 2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша Можно пользоваться . Заодно проверьте на JDK11 - всё никак не доберусь... Круто вам. А сколько времени (мс) прибл. занимала чистка кеша? Вот не считал никогда. Да и зачем? Если кэш почистился- то потом он будет заполнятся- и это важнее по времени. Да и чистка приводит к сборке мусора, а насколько она замедлится- никто не знает. PS: сейчас я думаю, как бы обойтись без кодогенерации. А если на kotlin перейти? Но пока не придумал решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2019, 12:15 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Пока вот такой статус. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2019, 15:22 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Менял профили. Пока не помогает. Код: java 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2019, 15:49 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
У меня та же ошибка при сборке. А интересно было бы посмотреть. У меня в мыслях уже давно (только что проверил, аж в 2016 году таску заводил) прикрутить какой-нибудь централизованный кеш на JCache API (JSR 107). С имплементаторами пока не определился, но вроде EHCache имплементируют JSR 107. Вообще не пролема и допилить под свои нужды. Тоже та же идея, вешать аннотацию на метод типа @CachedResults Или по скоупам: @RequestScopedCachedResults @SessionScopedCachedResults и т.д. т.е. инвалидация этих кешей будет происходить в момент дестроя скоупа. Или @CachedResults(Type=Type.SYSTEM_CONFIGURATION) Ну и если выясняется, что SYSTEM_CONFIGURATION меняется, бросаем событие, и все кеши типа SYSTEM_CONFIGURATION чистятся. Но это просто задумки... Нет нет да вернусь к этому вопросу, когда-нибудь прикручу. Сейчас же в большей массе весь кеш это просто какие-то локальные решения, HashMaps, SessionScoped / ApplicationScoped бины и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2019, 18:28 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
rabiterНо это просто задумки...Я уж даже боюсь сказать сколько времени оно в спринге уже есть... в 3.1 точно все было ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2019, 18:46 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Если закомментарить плагины maven-javadoc-plugin maven-gpg-plugin И инсталлировать по-модулям отдельно то компилляция проходит чуть дальше но всё равно есть failed tests. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2019, 19:34 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Меня в топике больше-бы интересовали более общие вопросы. А имено. Какие бывают кеши? Вот статья на хабре https://habr.com/en/post/38771/ различает - Независимый или статичный - Явно-зависимый - Неявно-зависимый - Условно-зависимый Связи между кешированием и шаблонами (CQRS например). Прочие свойства (идемпотентность данных). А также теорема Брювера. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2019, 20:22 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Андрей ПанфиловrabiterНо это просто задумки...Я уж даже боюсь сказать сколько времени оно в спринге уже есть... в 3.1 точно все было к сожалению, у нас не спринг.. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 02:59 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
И вправду- был сломан пуш в mvn-central (сделали не очень хорошими костылями). Пофикшу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 07:54 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
rabiterк сожалению, у нас не спринг..ну вот открыл другой проект ~2011 года, там тоже самое, только в профиль: на AspectJ чет написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 12:14 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
maytonПока вот такой статус. Ага. mxcache-asm собирается и пушится отдельно. Он уже на oss.sonatype.com но ещё не доехал до мавен-централа. Можно просто зайти туда и сделать mvn install (главное, чтобы был любой ключ gnupg локально- он сразу подписывает сборку). Ну и тесты- пофиксил, там странная какая-то микробага с особенностями open jdk связанная. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 14:05 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey TominМожно просто зайти туда и сделать mvn install Т.е. Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 14:06 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Андрей Панфиловrabiterк сожалению, у нас не спринг..ну вот открыл другой проект ~2011 года, там тоже самое, только в профиль: на AspectJ чет написано. Да это все понятно Надо только убедиться, что вызов аспектов в итоге не тратит больше времени чем польза от кеширования) Это я не про AspectJ, а про интерсепторы спринговые и CDI. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 15:05 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey Tomin, mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 15:07 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
rabiterAlexey Tomin, mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего) Там собственно кэш, плюс интеграции- с джусом, с мавен/грэдл/идеей. Никаких "кишков" основных проектов не попало. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 17:13 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey TominrabiterAlexey Tomin, mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего) Там собственно кэш, плюс интеграции- с джусом, с мавен/грэдл/идеей. Никаких "кишков" основных проектов не попало. Да это понятно, что от основных проектов там ничего нет. Просто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 17:18 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
rabiterПросто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб? Изначально надо было выделить этот код в библиотеку, чтобы использовать в нескольких проектах. А дальше, насколько я понимаю, результат показался достаточно хорошим, чтобы можно было показать всем. Ну и прикольно же ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 07:19 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey TominrabiterПросто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб? Изначально надо было выделить этот код в библиотеку, чтобы использовать в нескольких проектах. А дальше, насколько я понимаю, результат показался достаточно хорошим, чтобы можно было показать всем. Ну и прикольно же Да, согласен, прикольно! Похожая ситуация, подумывал вынести кое-что в public, но потом как понял сколько там еще надо доделывать для паблика и плюнул) Извиняюсь за флуд. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 13:52 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey TominAlexey TominМожно просто зайти туда и сделать mvn install Т.е. Код: sql 1. 2.
На другом окружении Код: java 1. 2. 3. 4. 5. 6.
Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 14:52 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
mayton Код: java 1. 2. 3. 4. 5.
Я ж говорю- GPG надо иметь с ключом. Мавен централ пока не пропихнул либу :( PS: но вот собирать на винде я даже никогда не пробовал. У нас винда только у PM'а, у которой и java-то не установлена ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2019, 16:10 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Alexey TominЯ ж говорю- GPG надо иметь с ключом. Мавен централ пока не пропихнул либу Разобрался я с централом- в oss.sonatype.com есть, скоро на https://mvnrepository.com/artifact/com.maxifier.mxcache/mxcache-asm ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:17 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
По теме топика. Расматриваю конфигурацию. 1. Amazon EC2/ WebApp/GraphQL (endpoint) 2. 2x EC2 / Apache Ignite Caches (caches) 3. Шаровый Amazon S3 как общая точка персистенса для двух Ignite. 4. Конфигурация кешей. Стандартная механика с WAL отключена ( 5. Работаем как In-Memory. По прохождении 2 минут каждая запись делает выталкивается из кеша и сохраняется в S3. В чем вопрос. На каждом Ignite есть быстрый локальный диск класса SSD. Он небольшой но больше чем оператива. Хочу попробовать кеш с 2 уровнями когда запись выталкивается сначала на SSD. А после этого на S3. Выталкивание на S3 - не срочное. Фактически оно актуально только когда идет перебалансировка узлов. Тоесть падают и однимаются узлы и меняются маппинг партишенов для ключей. Грубо говоря когда падает caches-01 то его локальные данные должны заехать в caches-02. Схема предполагает бесконечно болшой рост узлов кешей. Так заявляет бизнес. Сейчас их 2 но может быть и 20 и 200. Вопрос - концептуальный. Взлетит? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:34 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
mayton, Видимо не весь солюшен описан. Если это кэш, то где мастер данные? Или in-memory database, то где констистентность? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 15:27 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Консистентность между нодами у него - из коробки. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 15:29 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
mayton, Видимо, неправильно выразился. Упала нода, на S3 часть данных не выгрузилась. Данные пропали? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 16:32 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Система - для аналитики. Данные - write-only. +декларировано своство идемпотентности для всех ее частей. БД. S3. И Ignite caches. Тоесть если какие-то данные недозагрузились - мы просто повторно повторяем загрузку того дата-сета на котором было падение. И данные обновляются до последнего актуального состояния. Если их нет - загружаются. Если уже были - сверяются и обновляются. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 10:07 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Уже несколько лет рассеяно думаю над идей. Вот сегодня сеть Bittorrent хранит пета-байты музла и видосов. А можно ли эту сеть представить как распределённую файлову систему. Где ключ (директория или файл) это в общем человекочитабельное название а значение - магнитная ссылка. Которая может быть либо загружена по заказу пользователем на его локальный диск. Или вытеснена по eviction policy. Разумеется доступ к просмотру содержимого таких файлов будет затруднен. Но обозревать каталог можно будет всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 11:50 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
И различные points к реализации - https://www.javadoc.io/doc/javax.cache/cache-api/1.1.1/index.html - https://commons.apache.org/proper/commons-vfs/ ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2019, 12:01 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Вернусь обратно к кешам. Почитал еще раз статью на хабре. https://habr.com/en/company/surfingbird/blog/306252/ Заинтересовал меня этот 2Q. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2019, 17:54 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Еще поинт. В тему Redis/Memcached. Представим что у нас есть некий толстый диск старого типа. Магнитный на 16 терабайт. Типа такого Seagate Exos X16 HDD 16TB 7200rpm 256MB ST16000NM002G 3.5 Смонтирован как /tmp со своей хитрой файловой системой. И мы храним на нём фильмы. Музло. Вобщем всё что скачано для просмотра. Но храним тоже по принципу кеша. Только очень большого и долгоиграющего. Вычисляем для каждого файла его рейтинг полезности. Например если это сериал типа Game Of Thrones, который мы с женой посмотрели уже раза 3. То соотв каждый файл этого сериала получает +3 балла. А те файлы которые были просмотрены 0 раз - соотв внизу списка. И когда допустим я качаю на этот диск новый сериал и при нехватке места (осталось 0.001 %) срабатывает логика автоматического удаления старых файлов у которых этих баллов - меньше. Чуть дальше. Я думаю несправедливо сразу грохать файлы не разу ни просмотренные. Пускай будет некая вещественая метрика. Которая изначально - максимальна для файла а потом - затухает со временем. Типа рейтинг свежести. И при расчете итогового рейтинга мы будем брать некое взвешенно произведение просмотров на эту метрику. Если вдруг (внезапно понадобился) файл который был удалён - он снова скачивается по magnet-link. Линк в свою очередь хранится всегда и не удаляется. Вобщем - дисковая система которая имеет в теории - бесконечный размер. В практике она будет хостить только полезные к просмотру сериалы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2019, 18:37 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
mayton Уже несколько лет рассеяно думаю над идей. Вот сегодня сеть Bittorrent хранит пета-байты музла и видосов. А можно ли эту сеть представить как распределённую файлову систему. Где ключ (директория или файл) это в общем человекочитабельное название а значение - магнитная ссылка. Которая может быть либо загружена по заказу пользователем на его локальный диск. Или вытеснена по eviction policy. Разумеется доступ к просмотру содержимого таких файлов будет затруднен. Но обозревать каталог можно будет всегда. майтон это уже давно реализовано в том же эпл music ты покупаешь музло оно хранится в дата центрах эпл и по подписке дается юзерам тоже саме есть у нетфликс и у эпл тв отстал ты от жизни брат) пс.я тут общался с джавистом из pivotal в живую и он сказал дядь забудь нах все что ты знал) вся эта этерпрайз шляпа через пару лет будет 90% на aws я уже начал изучать книжонку их главного разраба - забыл как называется - ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2019, 20:53 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Я качаю авторские фильмы с торрентов про которые эпл и нетфликс слыхом не слыхали. Кроме того я пишу о дисковом кеше который сэкономит тебе трафик и бабки. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 00:01 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
asv79 пс.я тут общался с джавистом из pivotal в живую и он сказал дядь забудь нах все что ты знал) вся эта этерпрайз шляпа через пару лет будет 90% на aws я уже начал изучать книжонку их главного разраба - забыл как называется - По поводу AWS. Ты общался с джавистом? Теперь пообщайся со мной. AWS-lambda это говно еще то. И наша к примеру попытка полносьтю выйти в server-less провалилась. Приложение не декомпозировалось на лямбды. Возможно удел лямбд это например написание конвертеров картинок которые делают thumbnails для крупного хостинга изображений. Но написание сколь-либо сложной и вменяемой логики - почти невозможно. Есть ограничения на память и на время сеанса. По поводу AWS-S3. Кроме того что он толстый (это правда). Он еще и обладает некоторыми свойствами которые выводят его из области обычного использования файловой системы. И подводят тебя к другим принципам. Типа асинхронизма и идемпотентности. Грубо говоря S3 - это НЕ ФАЙЛОВАЯ система. В ней нет директорий как таковых. Грубо говоря навигация по каталогам - это фейк. И если кто-то завязался на таймингах которые критичны к тому как вы навигируетесь по каталогам - поздравляю вас - вы проиграли. Любой жлобский магнитый диск навигацию сделает быстрее. Этот месседж надо выжечь калёным железом на руке каждого кто хочет заниматься с AWS в будущем. Я видел уже 2 проекта которые облажались думая что их логика которая персистит и читает документы с локальной ФС вдруг (!) внезапно взлетит и также будет работать с S3. По поводу всех остальных сервисов я пока не готов говорить. Кстати в тостере есть много вопросов по биллингу. Ответ один - делайте макет - и замеряйте траты своих денег. Никто и никогда не может наперед угадать сколько вы заплптите за EC2+Dynamo+S3+SQS+Lambda+Gate после того как вы задеплоите ваше сферическое приложение в вакууме. Смотрите самую дорогую позицию в биллинге и оптимизируйте ее. Как - вот это уже тема отдельных курсов обучения. Благо в youtube есть миллион индусов котовых вам бесплатно хотя и не качественно об этом расскзать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 11:47 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
asv79 пс.я тут общался с джавистом из pivotal в живую и он сказал дядь забудь нах все что ты знал) вся эта этерпрайз шляпа через пару лет будет 90% на aws Один говорит будет, другой говорит нет. Поинтересуйся у него он вложил все деньги в акции Amazon если так уверен. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2019, 11:52 |
|
Четверговая инвалидация кешей.
|
|||
---|---|---|---|
#18+
Апну тему по поводу алгоритма 2Q. Основная суть изложена в документе 2Q: A Low Overhead High Performance Buffer Management Replacement Algorithm (авторов много) https://pdfs.semanticscholar.org/d62d/e5f995164fff50f5ce61c0113f6bc9f04225.pdf Есть также очень корявая и бестолковая статья на хабре где автор пытается это использовать. Расскажу своё понимание. 2Q основана на более агрессивной политике выталкивания слотов (slots) из LRU. Предполагается что горячие данные - это те которые будут востребованы через несколько шагов работы 2Q сразу же как только были туда положены. В отличие от классического LRU который награждает поднятием вверх всех подряд участников кеша независимо от эвристики. Теоретический документ (приаттачено) оперирует двумя очередями A1, Am. Это очередь потенциальных горячих слотов и очередь лузеров. Очереди в обычном режиме просто проталкивают элементы из одной в другую (паровозиком). Если подать в них sequence уникальных чисет то так это и будет. Но если элемент был запрошен в момент когда находился в A1. То происходит его защелкивание в отдельной структуре LRU тех самых горячих блоков. Повторное чтение-же лузеров из Am не вызывает никакой реакции. Авторы считают (в конце статьи) что это дает +5-10% перформанса к реалистичным данным по отношению к простому LRU. Вот вобщем-то и весь алгоритм. Длины очередей - это экспертные настроечные параметры. Статья не говорит но насколько я понял очереди это метафора. Там на самом деле нужны гибриды очередей и хешей (тоесть те-же самые 2хLRU но с разной политикой выталкивания). Для оптимизации очереди должны трекать линки на данные чтоб избежать копирования объектов. Вот пока всё. Кому интересно - читайте. Пишите свои (ценные) каменты. Я пока почитал про JDK LinkedHashMap https://docs.oracle.com/javase/9/docs/api/java/util/LinkedHashMap.html (там есть возможность переопределить removeEldestEntry()) Apache Commons LRUMap https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/map/LRUMap.html (фиг знает что никогда не юзал) EhCache (пока непонятно) Есть оно там или нет? Какие алгоритмы и какие политики вытеснения. https://www.ehcache.org/documentation/3.8/ ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2020, 19:45 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120963]: |
0ms |
get settings: |
27ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
679ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 797ms |
0 / 0 |