PG Saga: зависимые изменения данных в нескольких сервисах без двухфазных коммитов и синхронных зависимостей Архитектуры, масштабируемость
Главный архитектор X5 FoodTech.
EX DBA Unit Leader Avito.
Активно участвует в жизни PostgreSQL community.
Тезисы
История про опыт Avito в решении одного из вызовов микросервисной архитектуры - реализации бизнес-транзакций с соблюдением консистентности данных между сервисами при использовании архитектурного паттерна Database per Service.
После разделения приложения на несколько сервисов (как следствие, у каждого сервиса своя база данных) уже невозможно сделать все атомарно в 1 ACID-транзакции. Это можно реализовать 2 способами:
- Two-phase commit 2PC;
- sagas.
Как раз мы выбрали паттерн саг - вот об этом я хочу рассказать, в том числе, как мы его реализовали (PG - потому что в нашей реализации в сервисе саг мы используем PostgreSQL).
