15. Saga Choreography: от HTTP к Event-Driven архитектуре
В этом видео мы делаем первый по-настоящему архитектурный шаг в серии OrderHub: заменяем синхронный HTTP-вызов между микросервисами на асинхронную Saga Choreography. До этого видео мы уже настроили Kafka, Outbox, Debezium и OpenTelemetry, но самая важная бизнес-операция – оплата заказа – всё ещё выполнялась синхронно: клиент ждал ответа от payment-service, а при его отказе заказ не создавался. Мы исправляем это: Убираем блокирующий HTTP-вызов из OrderService Вводим новый статус AWAITING_PAYMENT Превращаем payment-service в полноценного участника Saga (Kafka consumer + producer) Добавляем PaymentEventConsumer в order-service, который обрабатывает PaymentCompletedEvent и PaymentFailedEvent Реализуем компенсирующую транзакцию (cancelOrder) – вместо rollback делаем новое действие Что вы узнаете Почему синхронный HTTP – это антипаттерн в микросервисах Что такое Saga Choreography и чем она отличается от Orchestration Как перейти от ACID к BASE и от rollback к компенсации Как сделать бизнес-операцию асинхронной с помощью Kafka и Outbox Как реализовать компенсирующую транзакцию на практике Таймкоды: 00:00 – Вступление: проблема синхронного HTTP 08:47 – Теория Saga (ACID vs BASE, Choreography vs Orchestration, Eventual Consistency) 21:37 – Рефакторинг OrderService (удаляем HTTP, добавляем AWAITING_PAYMENT) 27:06 – Payment-service становится участником Saga 41:29 – Order-service слушает ответы (компенсация) 51:10 – Демонстрации 58:50 – Observability: трассировка в Jaeger 104:07 – Ограничения Choreography и мостик к Orchestration Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #java #programming #spring #SagaChoreography #EventDrivenArchitecture #Microservices #SpringBoot #Kafka #Java #DistributedSystems #SoftwareArchitecture
В этом видео мы делаем первый по-настоящему архитектурный шаг в серии OrderHub: заменяем синхронный HTTP-вызов между микросервисами на асинхронную Saga Choreography. До этого видео мы уже настроили Kafka, Outbox, Debezium и OpenTelemetry, но самая важная бизнес-операция – оплата заказа – всё ещё выполнялась синхронно: клиент ждал ответа от payment-service, а при его отказе заказ не создавался. Мы исправляем это: Убираем блокирующий HTTP-вызов из OrderService Вводим новый статус AWAITING_PAYMENT Превращаем payment-service в полноценного участника Saga (Kafka consumer + producer) Добавляем PaymentEventConsumer в order-service, который обрабатывает PaymentCompletedEvent и PaymentFailedEvent Реализуем компенсирующую транзакцию (cancelOrder) – вместо rollback делаем новое действие Что вы узнаете Почему синхронный HTTP – это антипаттерн в микросервисах Что такое Saga Choreography и чем она отличается от Orchestration Как перейти от ACID к BASE и от rollback к компенсации Как сделать бизнес-операцию асинхронной с помощью Kafka и Outbox Как реализовать компенсирующую транзакцию на практике Таймкоды: 00:00 – Вступление: проблема синхронного HTTP 08:47 – Теория Saga (ACID vs BASE, Choreography vs Orchestration, Eventual Consistency) 21:37 – Рефакторинг OrderService (удаляем HTTP, добавляем AWAITING_PAYMENT) 27:06 – Payment-service становится участником Saga 41:29 – Order-service слушает ответы (компенсация) 51:10 – Демонстрации 58:50 – Observability: трассировка в Jaeger 104:07 – Ограничения Choreography и мостик к Orchestration Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #java #programming #spring #SagaChoreography #EventDrivenArchitecture #Microservices #SpringBoot #Kafka #Java #DistributedSystems #SoftwareArchitecture




