Какие-либо устоявшиеся практики для реализации скоординированных операций через несколько API? - PullRequest
0 голосов
/ 02 ноября 2019

Написание сервиса, который должен взаимодействовать с несколькими API, а также выполнять некоторые транзакции с БД. Очевидно, что любая последовательность асинхронных вызовов может потерпеть неудачу, и тогда я думаю, что мне придется откатить шаги, которые были выполнены до сих пор. В случае с БД очевидным решением задачи будет использование транзакций. Таким образом, если какой-либо из этапов завершится неудачно - транзакция просто откатывается. Но что же происходит с гибридной распределенной средой?

Каковы лучшие практики здесь? Есть ли вообще?

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Независимо от того, используете ли вы только API остальных для связи или другие протоколы или методы, такие как веб-сокеты, вы также можете применять шаблон Saga.

Реализация потребует абстракции для вызовов другого типа, но этовсе равно будет считаться образцом саги. Оркестровка Saga все еще находится на уровне приложений, поэтому вы можете управлять ею независимо от того, REST, WebSockets, WSDL или что-то еще.

В дополнение к источникам Леонардо, пожалуйста, посмотрите на этот ответ .

1 голос
/ 08 ноября 2019

Учитывая, что гибридная распределенная среда и транзакции двухфазной фиксации недопустимы, вы можете применить шаблон Saga .

. Основная идея заключается в том, чтобы сделать ваши сервисы / модуливыполнять локальные транзакции и координировать распределенные транзакции между ними, предоставляя компенсационные операции для отмены операций, когда это необходимо.

Это сложный шаблон, который добавляет большую сложность вашей системе. Однако он обеспечивает хорошо разработанные решения для этой проблемы.

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...