При микросървиси всичко може частично да се провали. 1 от 8 услуги спря. Резултатът беше по-лош от пълно прекъсване.

Сценарият:

  • Потребителски поток: 8 услуги последователно
  • Услуга 6 (препоръки): 50% процент на грешки
  • Без circuit breaker, без резервен вариант
  • 30-секунден таймаут на опит

Какво преживяха потребителите:

  • 50% от заявките: Успех (в крайна сметка)
  • 50% от заявките: 90+ секунди таймаут
  • Потребителите повтарят → повече натоварване
  • Thread pool-овете изчерпани във всички услуги
  • Всичко се деградира

Най-лошата част:

  • Таблата показваха "Услуга 6: 50% здрава"
  • Потребителско изживяване: 0% използваемо
  • Няма ясен собственик (чия е вината за частичен отказ?)

Решението:

  • Circuit breakers на всички изходящи извиквания
  • Грациозна деградация (показване на страница без препоръки)
  • Таймаути измервани в ms, не в секунди
  • Bulkhead модел за изолиране на откази

Урок: В разпределени системи първо проектирайте за частични откази.


← Назад към Научени Уроци