Паттерн «переборка» (Bulkhead)
Коротко: Паттерн bulkhead («переборка») разделяет ресурсы так, чтобы отказ или перегрузка одной части не тянули за собой всю систему.
Подробнее: Название пришло из судостроения: водонепроницаемые переборки обеспечивают, что течь затопит лишь один отсек. В программном обеспечении каждая зависимость или группа клиентов получает собственные ресурсы, например свой пул потоков или соединений.
Подробности
- Проблема: Если служба вызывает медленных партнёров на общем пуле, зависшие запросы в итоге занимают все потоки. После этого встают и вызовы к здоровым партнёрам.
- Решение: Отдельный ограниченный пул на каждого партнёра. Когда он заполнен, откажут только вызовы к этому партнёру.
- Варианты: отдельные процессы или контейнеры, отдельные очереди, отдельные соединения с базой данных, квоты на арендатора.
- Взаимодействие: Вместе с предохранителем, тайм-аутами и повторами образует базовый набор отказоустойчивости.
- Цена: Раздельные пулы хуже используют оборудование, ведь свободные места в одном пуле не помогают другому.
См. также: Backpressure