Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Четверговая инвалидация кешей. / 25 сообщений из 40, страница 1 из 2
10.10.2019, 14:56
    #39874638
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Привет друзья!

Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него
устаревшие или изменённые записи.

Вопрос - сложный. И в общем случае еще нерешённый для 90% юзкейсов что я видел. Особенно
для реляционных БД.

Вобщем - отпишите ваш опыт (позитивный и негативный)

Спасибо.
...
Рейтинг: 0 / 0
10.10.2019, 16:23
    #39874723
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Хеш-теги по теме (пишу навскидку по памяти могу что-то забыть поэтому прошу дополнять):

Java: EhCache, InfiniSpan, @EnableCaching (Spring)

General: Memcached, Redis

Servers: nginx

HTTP: Expires, Cache-Control, Age

Из Оракловых технологий: OCI Client Caching

Алгоритмы: LRU, 2Q, ARC

Теория: ? Х.З
...
Рейтинг: 0 / 0
11.10.2019, 11:22
    #39875050
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
maytonПривет друзья!

Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него
устаревшие или изменённые записи.

У нас в итоге свой костылище написали :)
1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш.
2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша


Можно пользоваться . Заодно проверьте на JDK11 - всё никак не доберусь...
...
Рейтинг: 0 / 0
11.10.2019, 11:40
    #39875066
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Alexey TominmaytonПривет друзья!

Все пользуются кешами. Сегодня топик не о том как прогреть кеш. А наоборот. Как удалить из него
устаревшие или изменённые записи.

У нас в итоге свой костылище написали :)
1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш.
2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша


Можно пользоваться . Заодно проверьте на JDK11 - всё никак не доберусь...
Круто вам. А сколько времени (мс) прибл. занимала чистка кеша?
...
Рейтинг: 0 / 0
11.10.2019, 11:48
    #39875072
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
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
...
Рейтинг: 0 / 0
11.10.2019, 12:15
    #39875099
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
maytonAlexey Tominпропущено...


У нас в итоге свой костылище написали :)
1. На метод с кэшированием можно поставить тэг. Потом сказать "почистить все кэши с таким тэгом". Есть и другие способы сбрасывать конкретный кэш.
2. Когда случился кэшмисс- в стеке ищутся другие методы, создающие сейчас кэш и выставляются зависимости. Поэтому когда чистятся кэши (строки кжшей) из пункта 1 - то чистятся и те строки кэши, заполнение которых было в стеке в момент создания кэша


Можно пользоваться . Заодно проверьте на JDK11 - всё никак не доберусь...
Круто вам. А сколько времени (мс) прибл. занимала чистка кеша?

Вот не считал никогда. Да и зачем? Если кэш почистился- то потом он будет заполнятся- и это важнее по времени. Да и чистка приводит к сборке мусора, а насколько она замедлится- никто не знает.

PS: сейчас я думаю, как бы обойтись без кодогенерации. А если на kotlin перейти? Но пока не придумал решение.
...
Рейтинг: 0 / 0
12.10.2019, 15:22
    #39875535
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Пока вот такой статус.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
mayton@ryzen-ssd:~/git/mxcache$ uname -a
Linux ryzen-ssd 5.0.0-31-generic #33~18.04.1-Ubuntu SMP Tue Oct 1 10:20:39 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
mayton@ryzen-ssd:~/git/mxcache$ 
mayton@ryzen-ssd:~/git/mxcache$ javac -version
javac 11.0.4
mayton@ryzen-ssd:~/git/mxcache$ mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-24T21:41:47+03:00)
Maven home: /maven/3.6.0
Java version: 11.0.4, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.0.0-31-generic", arch: "amd64", family: "unix"



Код: 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.
mayton@ryzen-ssd:~/git/mxcache$ mvn clean package -DskipTests
............
[WARNING] The POM for com.maxifier.mxcache:mxcache-asm:jar:7.1 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for MxCache 2.6.9-SNAPSHOT:
[INFO] 
[INFO] MxCache ............................................ SUCCESS [  0.849 s]
[INFO] MxCache runtime .................................... FAILURE [  0.062 s]
[INFO] MxCache instrumentator ............................. SKIPPED
[INFO] Generator of MxCache cache classes ................. SKIPPED
[INFO] MxCache IDEA API stubs ............................. SKIPPED
[INFO] MxCache Idea plugin ................................ SKIPPED
[INFO] MxCache maven plugin ............................... SKIPPED
[INFO] MxCache gradle plugin .............................. SKIPPED
[INFO] MxCache guice integration .......................... SKIPPED
[INFO] MxCache Guava integration .......................... SKIPPED
[INFO] MxCache tests ...................................... SKIPPED
[INFO] JConsole plugin stub ............................... SKIPPED
[INFO] MxCache JMX ........................................ SKIPPED
[INFO] MxCache EhCache strategies ......................... SKIPPED
[INFO] MxCache API stub generator ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.125 s
[INFO] Finished at: 2019-10-12T15:09:53+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project mxcache-runtime: Could not resolve dependencies for project com.maxifier.mxcache:mxcache-runtime:jar:2.6.9-SNAPSHOT: Failure to find com.maxifier.mxcache:mxcache-asm:jar:7.1 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :mxcache-runtime
...
Рейтинг: 0 / 0
12.10.2019, 15:49
    #39875538
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Менял профили. Пока не помогает.

Код: java
1.
2.
mvn clean package -DskipTests -P jdk9
mvn clean package -DskipTests -P release
...
Рейтинг: 0 / 0
12.10.2019, 18:28
    #39875548
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
У меня та же ошибка при сборке. А интересно было бы посмотреть. У меня в мыслях уже давно (только что проверил, аж в 2016 году таску заводил) прикрутить какой-нибудь централизованный кеш на JCache API (JSR 107). С имплементаторами пока не определился, но вроде EHCache имплементируют JSR 107. Вообще не пролема и допилить под свои нужды. Тоже та же идея, вешать аннотацию на метод типа @CachedResults
Или по скоупам: @RequestScopedCachedResults
@SessionScopedCachedResults
и т.д.
т.е. инвалидация этих кешей будет происходить в момент дестроя скоупа.

Или @CachedResults(Type=Type.SYSTEM_CONFIGURATION)

Ну и если выясняется, что SYSTEM_CONFIGURATION меняется, бросаем событие, и все кеши типа SYSTEM_CONFIGURATION чистятся.

Но это просто задумки... Нет нет да вернусь к этому вопросу, когда-нибудь прикручу. Сейчас же в большей массе весь кеш это просто какие-то локальные решения, HashMaps, SessionScoped / ApplicationScoped бины и т.д.
...
Рейтинг: 0 / 0
12.10.2019, 18:46
    #39875551
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
rabiterНо это просто задумки...Я уж даже боюсь сказать сколько времени оно в спринге уже есть... в 3.1 точно все было
...
Рейтинг: 0 / 0
12.10.2019, 19:34
    #39875558
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Если закомментарить плагины

maven-javadoc-plugin
maven-gpg-plugin

И инсталлировать по-модулям отдельно то компилляция проходит чуть дальше но всё равно есть
failed tests.
...
Рейтинг: 0 / 0
12.10.2019, 20:22
    #39875562
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Меня в топике больше-бы интересовали более общие вопросы. А имено. Какие бывают кеши?

Вот статья на хабре https://habr.com/en/post/38771/ различает
- Независимый или статичный
- Явно-зависимый
- Неявно-зависимый
- Условно-зависимый

Связи между кешированием и шаблонами (CQRS например). Прочие свойства (идемпотентность данных). А также
теорема Брювера.
...
Рейтинг: 0 / 0
14.10.2019, 02:59
    #39875752
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Андрей ПанфиловrabiterНо это просто задумки...Я уж даже боюсь сказать сколько времени оно в спринге уже есть... в 3.1 точно все было

к сожалению, у нас не спринг..
...
Рейтинг: 0 / 0
14.10.2019, 07:54
    #39875766
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
И вправду- был сломан пуш в mvn-central (сделали не очень хорошими костылями). Пофикшу.
...
Рейтинг: 0 / 0
14.10.2019, 12:14
    #39875895
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
rabiterк сожалению, у нас не спринг..ну вот открыл другой проект ~2011 года, там тоже самое, только в профиль: на AspectJ чет написано.
...
Рейтинг: 0 / 0
14.10.2019, 14:05
    #39875976
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
maytonПока вот такой статус.


Ага. mxcache-asm собирается и пушится отдельно. Он уже на oss.sonatype.com но ещё не доехал до мавен-централа.
Можно просто зайти туда и сделать mvn install (главное, чтобы был любой ключ gnupg локально- он сразу подписывает сборку).
Ну и тесты- пофиксил, там странная какая-то микробага с особенностями open jdk связанная.
...
Рейтинг: 0 / 0
14.10.2019, 14:06
    #39875980
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Alexey TominМожно просто зайти туда и сделать mvn install

Т.е.
Код: sql
1.
2.
cd mxcache-asm
mvn install
...
Рейтинг: 0 / 0
14.10.2019, 15:05
    #39876036
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Андрей Панфиловrabiterк сожалению, у нас не спринг..ну вот открыл другой проект ~2011 года, там тоже самое, только в профиль: на AspectJ чет написано.

Да это все понятно
Надо только убедиться, что вызов аспектов в итоге не тратит больше времени чем польза от кеширования) Это я не про AspectJ, а про интерсепторы спринговые и CDI.
...
Рейтинг: 0 / 0
14.10.2019, 15:07
    #39876039
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Alexey Tomin,

mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего)
...
Рейтинг: 0 / 0
14.10.2019, 17:13
    #39876123
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
rabiterAlexey Tomin,

mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего)

Там собственно кэш, плюс интеграции- с джусом, с мавен/грэдл/идеей.
Никаких "кишков" основных проектов не попало.
...
Рейтинг: 0 / 0
14.10.2019, 17:18
    #39876131
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Alexey TominrabiterAlexey Tomin,

mxcache был изначально только частью вашего проекта, а потом вы вынесли его на гитхаб, правильно я понимаю? Я глянул, там довольно много всего)

Там собственно кэш, плюс интеграции- с джусом, с мавен/грэдл/идеей.
Никаких "кишков" основных проектов не попало.

Да это понятно, что от основных проектов там ничего нет. Просто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб?
...
Рейтинг: 0 / 0
15.10.2019, 07:19
    #39876314
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
rabiterПросто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб?

Изначально надо было выделить этот код в библиотеку, чтобы использовать в нескольких проектах.
А дальше, насколько я понимаю, результат показался достаточно хорошим, чтобы можно было показать всем.
Ну и прикольно же
...
Рейтинг: 0 / 0
15.10.2019, 13:52
    #39876580
rabiter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Alexey TominrabiterПросто интересно, что послужило толчком вынести кеш как отдельный проект в гитхаб?

Изначально надо было выделить этот код в библиотеку, чтобы использовать в нескольких проектах.
А дальше, насколько я понимаю, результат показался достаточно хорошим, чтобы можно было показать всем.
Ну и прикольно же


Да, согласен, прикольно! Похожая ситуация, подумывал вынести кое-что в public, но потом как понял сколько там еще надо доделывать для паблика и плюнул)
Извиняюсь за флуд.
...
Рейтинг: 0 / 0
15.10.2019, 14:52
    #39876602
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
Alexey TominAlexey TominМожно просто зайти туда и сделать mvn install

Т.е.
Код: sql
1.
2.
cd mxcache-asm
mvn install



На другом окружении

Код: java
1.
2.
3.
4.
5.
6.
ver
Microsoft Windows [Version 10.0.17763.678]
java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)


Код: java
1.
2.
3.
4.
5.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project mxcache-asm: Exit code: 1 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project mxcache-asm: Exit code: 1
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
...
Рейтинг: 0 / 0
15.10.2019, 16:10
    #39876643
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Четверговая инвалидация кешей.
mayton
Код: java
1.
2.
3.
4.
5.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project mxcache-asm: Exit code: 1 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project mxcache-asm: Exit code: 1
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)



Я ж говорю- GPG надо иметь с ключом.
Мавен централ пока не пропихнул либу :(

PS: но вот собирать на винде я даже никогда не пробовал. У нас винда только у PM'а, у которой и java-то не установлена
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Четверговая инвалидация кешей. / 25 сообщений из 40, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]