Size: a a a

Боль Тимлида

2021 April 03

AM

Andrei Moiseev in Боль Тимлида
Ну, я сейчас использую простенький самописный движок для оркестрации процессов на основе сообщений. Там вполне можно делать компенсации на уровне всего процесса, а не только отдельной операции. Называю это сагой. И знаю более одного фреймворка, где похожие конструкты также называются сагами. 😊
источник

Ms

Mutko says in Боль Тимлида
Andrei Moiseev
Ну, я сейчас использую простенький самописный движок для оркестрации процессов на основе сообщений. Там вполне можно делать компенсации на уровне всего процесса, а не только отдельной операции. Называю это сагой. И знаю более одного фреймворка, где похожие конструкты также называются сагами. 😊
+
источник

AM

Andrei Moiseev in Боль Тимлида
У меня есть подозрение, что такое понимание термина сага является сильно более распространённым.
источник

AM

Andrei Moiseev in Боль Тимлида
Я это к тому, что перед тем как говорить, что YYY не работает, неплохо бы убедиться, что все участники обсуждения одинаково понимают значение YYY.
источник

PD

Phil Delgyado in Боль Тимлида
Andrei Moiseev
Ну, я сейчас использую простенький самописный движок для оркестрации процессов на основе сообщений. Там вполне можно делать компенсации на уровне всего процесса, а не только отдельной операции. Называю это сагой. И знаю более одного фреймворка, где похожие конструкты также называются сагами. 😊
А что значит "на основе сообщений", можешь чуть поподробнее рассказать?
источник

PD

Phil Delgyado in Боль Тимлида
Andrei Moiseev
Я это к тому, что перед тем как говорить, что YYY не работает, неплохо бы убедиться, что все участники обсуждения одинаково понимают значение YYY.
Ну, я смотрю на определения из оригинальной статьи и с wiki Фаулера.
Впрочем, сама концепция "при ошибке делаем компенсацию" - не очень правильная.
Граф выполнения бизнес-транзакции при ошибках предполагает кучу разных циклов (повторы, возврат на несколько шагов назад и так далее)
источник

PD

Phil Delgyado in Боль Тимлида
А, вру, не у Фаулера оно было, у Ричардсона на microservices.io
источник

AK

Anton Kucherov in Боль Тимлида
источник

AM

Andrei Moiseev in Боль Тимлида
Phil Delgyado
А что значит "на основе сообщений", можешь чуть поподробнее рассказать?
Ну, персистентный актор по сути. У него есть состояние, он может принимать сообщения и отправлять сообщения. Т.к. есть состояние, то при сбое всегда понятен контекст и можно сделать компенсацию с учётом контекста - повтор, возврат на предыдущие шаги и т.п. Во-многом на твои же идеи и опирался при проектировании.
источник

PD

Phil Delgyado in Боль Тимлида
Andrei Moiseev
Ну, персистентный актор по сути. У него есть состояние, он может принимать сообщения и отправлять сообщения. Т.к. есть состояние, то при сбое всегда понятен контекст и можно сделать компенсацию с учётом контекста - повтор, возврат на предыдущие шаги и т.п. Во-многом на твои же идеи и опирался при проектировании.
Хм. У тебя актор - это вся бизнес-транзакция? И, отдельно, все прочие сервисы?
источник

PD

Phil Delgyado in Боль Тимлида
Но вообще, если смотреть на основные тексты по этому поводу - это не сага, это все-таки другой паттерн )
источник

AM

Andrei Moiseev in Боль Тимлида
Phil Delgyado
Хм. У тебя актор - это вся бизнес-транзакция? И, отдельно, все прочие сервисы?
По-разному. Может быть несколько акторов для сложных процессов.
источник

PD

Phil Delgyado in Боль Тимлида
Ага, похоже. Собствено, workflow - это примерно про то же, только не event-based, а dsl-based
Но по всем определениям (я сейчас штук пять проглядел), сага как паттерн - это именно про последовательность "локальных транзакций", для части из которых определяется "компенсирующая транзакция" и при сбое просто выполняются все "компенсирующие транзакции" в обратном порядке.
Т.е. акторы, workflow и прочие схемы с "общим контекстом бизнес-транзакции и сложным поведением с опорой на весь контекст" - сагой не являются.
источник

AM

Andrei Moiseev in Боль Тимлида
Ну, просто я ни разу не встречал готовых реализаций саги в терминах Гарсиа-Молина. А вот то что я описал с незначительными вариациями - довольно много.
источник

PD

Phil Delgyado in Боль Тимлида
Ну, в Авито более-менее классические саги реализованы.
В книжках тоже классика описывается всюду.
источник

PD

Phil Delgyado in Боль Тимлида
То, что ты описал - это, с моей точки зрения, гораздо более грамотное решение, нежели саги.
источник

AM

Andrei Moiseev in Боль Тимлида
Я имею ввиду какие-то опенсорсные реализации.
источник

PD

Phil Delgyado in Боль Тимлида
Ну и, если вспомнить с чего начинали, при высокой нагрузке ты как раз вылетаешь в необходимость поддерживать кучу разнообразных мелких очередей (по одной на экземпляр каждого актора) с гарантиями. И тут РСУБД не помогает (и вообще очень мало какой сторадж помогает, увы).
источник

AM

Andrei Moiseev in Боль Тимлида
источник

AM

Andrei Moiseev in Боль Тимлида
источник