Skip to content

Instantly share code, notes, and snippets.

@Barolina
Last active March 15, 2022 06:48
Show Gist options
  • Save Barolina/6dd8c8b2da7220cccb32cfb7e9ea1f6a to your computer and use it in GitHub Desktop.
Save Barolina/6dd8c8b2da7220cccb32cfb7e9ea1f6a to your computer and use it in GitHub Desktop.
Избежать каскадных сбоев в расперделенных системах

Одним из решенеим является - Перейти от паттерна оркестрация к паттерну хареографии ( public - subscribe)


И немного об антипатернах

Антипатерны

  1. Прием неограниченного кол-ва запросов

    Лучше быстро выйти из строя, чем долго зависать на выполнение запросов . Для этого можно применить стратегию rate limiting в load balancer or proxy, что позволит так же избежать DDoы-атак. Если число запросов, ожидающих очередь, превыющий допустимого передела возможности сервера, то они подлежат отклонению.

    Или сброс трафика, путем ответа HTTP 503 ( Service unavailable)

  2. Повторные попытки от клиента

    Увеличить время на вызов последующео запроса ( jitter)

  3. Сбой при неверном ввводе

    Валидация данных, используя fuzz test (нечетких тестов )

  4. Обработка отказа на основе близости

    Перенаправлять трафиик, тольк на менее нагруженный кластеры

  5. Сбой часто вызваны дополнительной обработкой

    К примеру репликацией, нужна задержка или ограничение объема репликации

  6. Длительное время запуска

    Суть - не прогретый кеш, запросы идующие напрамяую к серверу, вызывающий сбой в системе при большой нагрузки . Следует отвадавть пердпочтение системам с более быстрым временм запуска.


by https://blog.mi.hdm-stuttgart.de/index.php/2022/03/03/cascading-failures-in-large-scale-distributed-systems/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment