Патерн «перебірка» (Bulkhead)
Коротко: Патерн bulkhead («перебірка») розділяє ресурси так, щоб відмова чи перевантаження однієї частини не тягли за собою всю систему.
Докладніше: Назва прийшла з суднобудування: водонепроникні перебірки забезпечують, що течь затопить лише один відсік. У програмному забезпеченні кожна залежність або група клієнтів отримує власні ресурси, наприклад свій пул потоків чи з’єднань.
Подробиці
- Проблема: Якщо служба викликає повільних партнерів на спільному пулі, завислі запити зрештою займають усі потоки. Після цього стають і виклики до здорових партнерів.
- Рішення: Окремий обмежений пул на кожного партнера. Коли він заповнений, відмовлять лише виклики до цього партнера.
- Варіанти: окремі процеси чи контейнери, окремі черги, окремі з’єднання з базою даних, квоти на орендаря.
- Взаємодія: Разом із запобіжником, тайм-аутами та повторами утворює базовий набір відмовостійкості.
- Ціна: Роздільні пули гірше використовують обладнання, адже вільні місця в одному пулі не допомагають іншому.
Див. також: Backpressure