Вопрос с собеседования · System design

Чем write-through отличается от write-back при кэшировании записи?

MiddleКэширование и CDN
Ещё спрашивают так:
  • Что такое write-around?
  • Как кэш обрабатывает запись?
Коротко

Write-through — запись синхронно в кэш и хранилище: согласованно и надёжно, но каждая запись медленная. Write-back — запись в кэш, в хранилище позже: быстро и объединяет изменения, но падение кэша теряет данные.

  • Write-back — для счётчиков и частых обновлений, где потеря допустима или есть журнал
  • Write-around — мимо кэша прямо в хранилище: не засоряет кэш редко читаемым
  • Page cache ОС — тоже write-back, поэтому существует fsync

А ещё Самый частый вариант в приложениях — cache-aside с удалением ключа

Подробно

Write-through держит кэш и хранилище согласованными и переживает потерю кэша, но каждая запись стоит обращения к медленному хранилищу. Write-back резко снижает задержку и позволяет объединять несколько изменений одной записи, поэтому его выбирают для счётчиков и высокочастотных обновлений, — но подтверждённые данные какое-то время существуют только в кэше, и его падение означает потерю. Есть и третий вариант, который стоит назвать: write-around пишет мимо кэша прямо в хранилище, что полезно, когда записанное вряд ли будут скоро читать и незачем вытеснять из кэша горячие данные. Выбор всегда делают от требований к потере данных и к задержке, а не по привычке.

Что хотят услышать

  • Различие по моменту записи в хранилище.
  • Компромисс: надёжность против задержки.
  • Где уместен каждый, write-around — плюс.

Частые ошибки

  • Использовать write-back для данных, потеря которых недопустима.
  • Забывать про write-around и засорять кэш редко читаемыми записями.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Write-through пишет только в кэш, а write-back — только в хранилище, минуя кэш
  • ✗Это два названия одной и той же стратегии
  • ✗Write-back применим только к CDN и статическим файлам
  • ✓Write-through пишет в кэш и хранилище синхронно; write-back — сначала в кэш, в хранилище позже

Что спросят дальше

  • Когда уместен write-around?
  • Как write-back сочетается с требованием долговечности?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования