Skip to content

Микросервисы

Паттерны архитектуры

  • Gateway - фасадик
  • Database per service / Shared database - каждому сервису своя база

Паттерны данных

  • Отчеты по данным из нескольким сервисам
    • Кроны, очереди с обновлениями, кеш

Паттерны отказоустойчивости

  • fallback - сервис не работает - показываем заглушку / альт флоу
  • bulkheads - изоляция сервисов
  • backpressure - уменьшаем нагрузку, если серв не справляется
  • self-healing - аи само починка
  • rate limiting - пон
  • retries (backoff) - ну ретраи и ретраи, с увеличивающимся отчетом до ретрая
  • feature toggles - фича флаги
  • circuit breaker - прокси между клиентом и сервисом, если сервис лежит, то прокси понимает это и не кидает ещё один запрос на сервис, а сразу отдает клиенту ошибку
  • gracefull degradation - лежит, ну и хуй с ним, кор функционал держим

Распределенные транзакции

2pc

  • Пессимистичный алго
  • Участники транзакции сначала готовятся к транзакции, ничего не делая
  • Когда все будут готовы, отправляется команда на коммит - участники выполняют свои команды
  • Оркестратор - узкое место, нужно ждать сначала подготовки, потом все закоммитить

Saga

  • Оптимистичный алго
  • Распределённая транзакция состоит из маленьких транзакций, каждая из которых имеет роллбек и при падении транзакции, последовательно откатываем транзакции

Материалы