Кэширование и CDN
В этом уроке мы знакомимся с кэшем (быстрое место, которое хранит уже вычисленные ответы, чтобы не выполнять работу заново; как стикер на столе с ответом, который вы уже нашли). Мы разберём несколько рабочих стилей: cache-aside (читаем из кэша, а если он пуст — идём к источнику и сохраняем ответ на
System Design (планирование того, как построить крупное ПО, обслуживающее множество людей) похож на планирование города: дороги, склады, светофоры и ремонтные бригады, чтобы город продолжал хорошо работать даже в самый плотный час пик.
- Кэширование
- Хранение готовых ответов в быстром месте (кэше), чтобы отвечать быстро и не выполнять одну и ту же работу дважды. Ключевой навык этого урока охватывает cache-aside (читаем из кэша, а если пусто — идём к источнику и сохраняем), write-through (сохраняем и в кэш, и в источник вместе), TTL (как долго ответ остаётся «свежим»), инвалидацию (отбрасывание устаревших данных), горячие ключи (элементы, которые все запрашивают одновременно) и CDN (серверы по всему миру, которые держат копии рядом с пользователем).
- Компромисс
- Осознанный выбор, у которого есть и выигрыш, и цена — как выбор маршрута: быстрая дорога стоит платы за проезд, а бесплатная занимает больше времени. На собеседовании вы объясняете интервьюеру выигрыш и цену каждого выбора.
- Эксплуатационная метрика
- Число, которое показывает, действительно ли решение работает, когда система запущена и обслуживает реальных пользователей (продакшен). Например: задержка (сколько времени занимает ответ), доля ошибок (доля запросов, которые завершаются неудачей), отставание очереди (сколько задач стоит в очереди) и доля попаданий в кэш (как часто мы нашли готовый ответ). Как приборы на панели автомобиля — они говорят вам, всё ли в порядке.