EMZETT.
Войти

Паттерн «переборка» (Bulkhead)

Коротко: Паттерн bulkhead («переборка») разделяет ресурсы так, чтобы отказ или перегрузка одной части не тянули за собой всю систему.

Подробнее: Название пришло из судостроения: водонепроницаемые переборки обеспечивают, что течь затопит лишь один отсек. В программном обеспечении каждая зависимость или группа клиентов получает собственные ресурсы, например свой пул потоков или соединений.

Подробности

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

См. также: Backpressure