Что важно знать
- L4 — по соединениям, L7 — по запросам с маршрутизацией.
- Алгоритмы: round robin, least connections, power of two choices.
- Rate limiting: token bucket, скользящее окно.
- Очереди и утилизация: рядом со 100% задержка растёт нелинейно.
Балансировщики L4 и L7, алгоритмы, проверки здоровья, rate limiting и сброс нагрузки.
Практика. Реализовать распределённый rate limiter на Redis и проверить его под нагрузкой с несколькими экземплярами сервиса.
Backpressure — механизм, которым медленный потребитель заставляет источник замедлиться, вместо того чтобы копить работу без предела.
При перегрузке лучше быстро отказать части запросов, чем медленно обслуживать все: иначе очереди растут, все запросы опаздывают, клиенты повторяют, и пропускная способность падает…
Round robin — по кругу, хорош при одинаковых серверах и запросах. Least connections / least requests — тому, у кого меньше активных, учитывает медленные запросы и серверы. Power…
Активные проверки — балансировщик сам опрашивает /health; пассивные — следит за ошибками и задержками реальных запросов и выкидывает выбросы (outlier detection).
L4 видит только IP и порты и распределяет соединения: быстро, дёшево, не понимает содержимого. L7 разбирает HTTP и распределяет запросы: маршрутизация по пути и заголовкам, TLS…
Token bucket — ведро на B жетонов пополняется со скоростью R; запрос забирает жетон, нет жетона — отказ. Допускает всплески до B, в среднем не больше R.
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.