EMZETT.
Увійти

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

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

Докладніше: Назва прийшла з суднобудування: водонепроникні перебірки забезпечують, що течь затопить лише один відсік. У програмному забезпеченні кожна залежність або група клієнтів отримує власні ресурси, наприклад свій пул потоків чи з’єднань.

Подробиці

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

Див. також: Backpressure