Перейти к содержимому
6 / 15

Что такое сага и как писать компенсирующие действия для распределённого процесса?

Сага — это бизнес-процесс, разложенный на локальные транзакции в разных сервисах, где вместо отката базы используется компенсирующее действие. Списали деньги и не смогли забронировать место — не «rollback», а «сделать возврат»: результат виден в истории, потому что откатить уже случившееся во внешнем мире нельзя. Координировать сагу можно двумя способами: оркестрация — отдельный процесс-дирижёр хранит состояние и вызывает шаги, хореография — каждый сервис реагирует на события соседей. Свойства саги — атомарность и долговечность есть, изоляции нет: промежуточные состояния видны всем, поэтому в модели нужен явный статус вроде «в обработке». Компенсации обязаны быть идемпотентными, а у каждого шага должен быть таймаут.

Что такое сага и как писать компенсирующие действия для распределённого процесса? | JScriptiser