awesome-everything EN
↑ Обратно к восхождению

Архитектура бэкенда

Graceful shutdown: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту graceful shutdown — сигналы, гонка deregistration, порядок drain, безопасность requeue, бюджет grace period и zero-downtime деплои на уровне флота.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь во время реального деплоя — не определение для заучивания, а порядок или disposition, которые нужно сделать правильно до того, как истечёт grace period.

Цель

Убедись, что связываешь контракт сигналов, гонку deregistration, порядок drain, безопасность requeue и координацию флота — тот синтез, к которому вели отдельные уроки.

Викторина

Команда выкатывает корректный 45-секундный SIGTERM-обработчик drain, но запросы всё равно обрываются на каждом деплое. Dockerfile запускает приложение через sh -c 'node server.js'. В чём корневая причина?

Викторина

Сервис с безупречным SIGTERM-обработчиком, который закрывает листенер в тот же миг, как приходит сигнал, всё равно даёт короткий всплеск connection-refused в самом начале каждого rollout. Почему и как чинить?

Викторина

Обработчик shutdown закрывает HTTP-сервер и пул БД в одном шаге. Большинство деплоев чистые, но иногда несколько запросов падают посреди drain с ошибками pool-closed. Какой принцип нарушен?

Викторина

Воркер очереди четыре минуты внутри задачи, когда приходит SIGTERM, а grace period 30s. Какая правильная disposition и что делает её безопасной?

Викторина

Во время shutdown сервис начинает проваливать и readiness, и liveness probe, чтобы «выключиться быстрее». Drain'ы начинают обрезаться. Что пошло не так?

Викторина

Каждый shutdown отдельного инстанса безупречен, но rolling-деплои под нагрузкой всё равно сбрасывают тонкий слой 502, и иногда выжившие поды падают. Какая пара fleet-уровневых исправлений это решает?

Итог

Сквозная линия юнита — одна упорядоченная дисциплина. Сначала контракт сигналов — SIGTERM должен реально дойти до зарегистрированного обработчика в PID 1, иначе SIGKILL завершит всё на дедлайне grace period. Затем гонка deregistration: провали readiness и выжди propagation до того, как перестанешь принимать, чтобы не отказывать трафику, который балансировщик ещё маршрутизирует. Затем drain в reverse dependency order — HTTP первым, datastores последними — чтобы ни один in-flight запрос не потерял ресурс, который ему ещё нужен, и всё это под guardian timeout. Работа, не влезающая в бюджет дедлайна, отклоняется (длинные запросы) или ставится в requeue (задачи), и requeue безопасен только при идемпотентном consumer. Наконец, подними это до флота: surge перед drain, deregister перед terminate и jitter синхронных closes — потому что локальная корректность не складывается в глобальную бесплатно.

Продолжить восхождение ↑Graceful shutdown: тест на свободное воспроизведение
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.