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