Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: saga, microservices, distributedtransaction, compensation

Как реализовать паттерн Saga в микросервисной архитектуре?

Проверяется знание распределённых транзакций и компенсирующих действий.

Короткий ответ

Saga — это разбиение долгой транзакции на локальные шаги с компенсацией при ошибке. Реализуется либо через оркестратор, либо через хореографию событий.

Длинный ответ

Проблема: В микросервисах нет общей транзакции. Нужно, чтобы цепочка действий (например, бронирование отеля + покупка билета + оплата) была атомарной.

Решение — Saga:

  • Каждое действие выполняется локально.

  • При сбое выполняются компенсирующие транзакции (отмена брони, возврат денег).

Подходы:

  1. Оркестратор — центральный сервис управляет шагами.

    • контроль, простая логика.

    • точка отказа.

  2. Хореография — каждый сервис сам реагирует на события других.

    • нет единой точки отказа.

    • сложнее отлаживать.

Пример (оркестратор):

  1. Оркестратор → PaymentService: списать деньги.

  2. Payment → BookingService: забронировать.

  3. Booking → TicketService: выписать билет.

  4. Если сбой на шаге 3 → Compensation: отменить бронь, вернуть деньги.

Вывод: Saga — стандартный паттерн для eventual consistency в распределённых системах.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    8

Навыки

  • Golang

    Golang

  • Postgres

    Postgres

  • RabbitMQ

    RabbitMQ

  • Kafka

    Kafka

Ключевые слова

#saga

#microservices

#distributedtransaction

#compensation

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.