Адът на частичните откази
При микросървиси всичко може частично да се провали. 1 от 8 услуги спря. Резултатът беше по-лош от пълно прекъсване.
Сценарият:
- Потребителски поток: 8 услуги последователно
- Услуга 6 (препоръки): 50% процент на грешки
- Без circuit breaker, без резервен вариант
- 30-секунден таймаут на опит
Какво преживяха потребителите:
- 50% от заявките: Успех (в крайна сметка)
- 50% от заявките: 90+ секунди таймаут
- Потребителите повтарят → повече натоварване
- Thread pool-овете изчерпани във всички услуги
- Всичко се деградира
Най-лошата част:
- Таблата показваха "Услуга 6: 50% здрава"
- Потребителско изживяване: 0% използваемо
- Няма ясен собственик (чия е вината за частичен отказ?)
Решението:
- Circuit breakers на всички изходящи извиквания
- Грациозна деградация (показване на страница без препоръки)
- Таймаути измервани в ms, не в секунди
- Bulkhead модел за изолиране на откази
Урок: В разпределени системи първо проектирайте за частични откази.