В Spring кэш и транзакции существуют рядом, но не знают друг о друге — из-за этого корректный на первый взгляд код может приводить к расхождениям между данными в базе и кэше. Особенно легко столкнуться с такими сценариями при использовании @CacheEvict, когда порядок операций влияет на итоговое состояние приложения. В статье разберемся, почему Spring-кэш может сохранять несуществующие значения, как возникает проблема с откатами и какие подходы помогают сохранить согласованность данных. Разобрать кейс
Кэш глазами «чайника»: Кэш – это комплексная система. Соответственно, под разными углами результат может лежать как в действительной, так и в мнимой области. Очень важно понимать разницу между тем, что мы ждем и тем, что есть на самом деле. Давайте прокрутим полный оборот ситуаций. Tl;dr: добавляя в архитектуру кэш важно явно осознавать, что кэш может быть средством дестабилизации системы под нагрузкой. Смотрите конец статьи. Читать дальше →
Во всех центральных процессорах любого компьютера, будь то дешёвый ноутбук или сервер за миллионы долларов, есть устройство под названием «кэш». И с очень большой вероятностью он обладает несколькими уровнями. Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)? Читать дальше →
Серия/семейство (проц) Core i7 Socket LGA 1151 Частота процессора 4.2 Тип поставки BOX Модель графического ядра Intel HD Graphics 630 Количество ядер 4 Количество потоков 8 Название ядра Kaby Lake L1 кэш 4х 64 КБ L2 кэш 4х 256 КБ L3 кэш 8 Разрядность 64 bit Разблокированный множитель ДА Пропускная … Процессор Intel Core™ i5-7500 […]