Чем bulkhead отличается от rate limiter?
- Что такое bulkhead?
Bulkhead ограничивает число одновременных вызовов зависимости — изоляция отсеков: медленный сервис не съест все потоки. Rate limiter ограничивает частоту за окно времени.
- Bulkhead: семафор или отдельный пул потоков на зависимость
- Rate limiter: защитить квоту внешнего API, не перегрузить зависимость
- Медленная зависимость при rate limiter всё равно займёт все потоки — нужен bulkhead
А ещё Resilience4j: @Bulkhead (SEMAPHORE или THREADPOOL), @RateLimiter
Подробно
Название bulkhead пришло из судостроения: корпус делят на отсеки, чтобы пробоина в одном не потопила судно. В приложении это отдельный пул потоков или семафор на каждую внешнюю зависимость — тогда зависший сервис съедает только свой отсек, а не все потоки приложения. Rate limiter решает другую задачу: соблюсти договорённость о частоте (например, не более ста запросов в секунду к партнёрскому API) или защитить себя от всплеска. Механизмы дополняют друг друга и обычно применяются вместе с таймаутами и circuit breaker: таймаут ограничивает длительность одного вызова, bulkhead — число одновременных, rate limiter — частоту, а circuit breaker отключает заведомо неработающую зависимость.
Что хотят услышать
- Одновременность против частоты.
- Сценарии каждого.
Частые ошибки
- Считать, что достаточно одного из механизмов.
- Ставить общий пул на все зависимости и терять изоляцию.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Bulkhead ограничивает частоту вызовов за интервал, а rate limiter — их параллелизм
- ✗Это два названия одного и того же механизма
- ✓Bulkhead ограничивает одновременные вызовы, rate limiter — частоту за интервал
- ✗Bulkhead применяется только к базам данных, rate limiter — только к HTTP
Что спросят дальше
- Чем bulkhead на семафоре отличается от bulkhead на отдельном пуле потоков?
- Как эти механизмы сочетаются с circuit breaker?
Разбор темы
- Resilience: таймауты, ретраи и circuit breaker
Защита от каскадных отказов: таймауты, безопасные ретраи, состояния circuit breaker, bulkhead и rate limiter, fallback и порядок паттернов.
Связанные вопросы
- Какие алгоритмы ограничения частоты запросов вы знаете? Middle
- Зачем нужен пул потоков и как выбрать его размер? Middle
- Внешний платёжный провайдер начал отвечать за 30 секунд вместо 200 миллисекунд. Через минуту сервис перестал отвечать вообще, включая страницы, не связанные с оплатой. Что произошло? Middle
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.