Кеширование
Dogpile: тест на свободное припоминание
Припоминание сильнее перечитывания. На каждый вопрос проговори или запиши полный ответ по памяти до того, как откроешь модельный — усилие припоминания закрепляет механику блокировки и lease, когда тебя поднимут пейджером в 3 часа ночи.
Реконструируй ключевые механизмы юнита — коллизию в момент истечения, single-flight против distributed-блокировки, TTL блокировки и продление lease, фенсинг и XFetch — не подглядывая в урок.
- 01Почему dogpile — именно проблема параллелизма в момент истечения и почему один горячий ключ — худший случай?
- 02В чём разница между локальным single-flight и distributed lock и когда нужен каждый?
- 03Почему у блокировки пересчёта обязан быть TTL и как его выбрать?
- 04Объясни продление lease: какую проблему оно решает и какой новый сбой вводит.
- 05Что такое fencing-токен и почему он важен для leased-блокировки пересчёта?
- 06Когда выбирать раннее вероятностное истечение (XFetch) вместо блокировки и как оно работает?
Если ты смог реконструировать каждый ответ по памяти — ты держишь хребет юнита: dogpile это коллизия в зазоре между первым промахом и переписыванием значения на одном горячем ключе; single-flight коалесит на процесс, а distributed lock коалесит флот; блокировке нужен TTL длиннее худшего пересчёта или, лучше, продлеваемый lease; leased-блокировке всё ещё нужен fencing-токен, потому что приостановленный держатель может лапситься и потом перезаписать; а XFetch растворяет коллизию целиком, пересчитывая рано и в одиночку до того, как ключ вообще истечёт под нагрузкой.