Сети и протоколы
Proxy и load balancing: тест с выбором ответа
Шесть вопросов, проходящих через весь юнит. Каждый отражает решение, которое вы принимаете на реальной платформе — не определение для пересказа, а компромисс между скоростью, справедливостью и состоянием под нагрузкой.
Убедитесь, что можете связать выбор алгоритма, L4 против L7, обнаружение здоровья, стратегию сессий и контроль каскада — тот синтез, к которому вели отдельные уроки.
Пул из 50 backends обслуживает запросы с резко разной стоимостью (вызовы API на 1 мс вперемешку с загрузками на 200 мс). Какой алгоритм балансировки — правильный default и почему?
Нужно направлять /api/payments/ в PCI-совместимый пул, а /api/catalog/ — в общий, делать retry на HTTP 5xx и собирать метрики по эндпоинтам. Какой слой нужен и сколько это стоит?
У backend заполнился диск; он по-прежнему принимает TCP-соединения, но возвращает 500 на каждый HTTP-запрос. Ваш активный health check — это TCP SYN-проба, и она сообщает, что backend здоров. Какое исправление правильное?
Команда включает sticky session, чтобы пользователи не разлогинивались, когда запросы попадают на разные backends. После деплоя дисбаланс нагрузки ухудшается, а упавший узел разлогинивает тысячи пользователей. Как это читать?
У backend пауза GC на 500 мс. Клиенты и три промежуточных слоя сервисов делают по одному retry при таймауте. Блип на 500 мс превращается в отказ всего кластера. Каков минимальный набор мер?
Ваш единственный L7 load balancer сам является единой точкой отказа: когда он падает, весь трафик пропадает. Какая топология убирает SPOF и какое ограничение она накладывает?
Сквозная линия юнита — один треугольник компромиссов: скорость, справедливость и состояние, разрешаемый на каждом слое. Power-of-two-choices — справедливый O(1)-default; L7 покупает content routing и retry на 5xx ценой латентности в 100× выше L4; активные плюс пассивные health check покрывают и краши, и тихие 5xx; sticky session — обход stateful-backend, который заменяется Redis; retry budget, circuit breaker и jitter ограничивают каскад; а anycast + BGP ECMP убирают собственную единую точку отказа LB ценой statelessness.