digital-garden/_inbox/Доклад. PG Saga зависимые изменения данных в нескольких сервисах.md
2024-06-13 21:01:37 +03:00

1.9 KiB
Raw Blame History

aliases tags date zero-link parents linked author link
зрелость/🌱
2024-04-04
00 Архитектура ПО
Реализация повествования (Saga)
Евтеев Константин
https://www.youtube.com/watch?v=OOP_4kuzaWI

Заметки

Докладчик рассказывает про то, как они справлялись с переходом с монолитной архитектуры на микросервисную в Avito. Они реализуют Database per service

Цели, которые хотели достичь:

  • Обеспечивать зависимые изменения для бизнес критичных данных.
  • Иметь возможность задать строгий порядок.
  • Соблюсти 100% консистентность (согласовать данные, даже в случае аварий).
  • Обеспечить проверку работоспособности на всех уровнях.

Был реализован сервис PG Saga. В качестве хранилища в этом сервисе используется синхронный PostgreSQL. Таким образом у них единый сервис для всех саг.

Механизм работы. На примере покупки премиальной подписки.

  • Владелец саги регистрирует сагу в PG Saga
  • Дальше он генерирует класс саги (с payload)
  • Дальше executor в PG Saga поднимает накопившиеся саги и начинает выполнять ее по шагам
    • В Billing Service выполняется резервирование денег
    • В User Service применяются VAS операции. Что это?