Обработка многогосударственных систем, предотвращающих несогласованные состояния - PullRequest
0 голосов
/ 11 марта 2019

Вот мой вариант использования:

У меня есть служба (служба 1), которая должна обновлять состояние некоторого объекта в нескольких внешних службах (служба 2, служба 3) при получении запроса на это. Я также должен обновить местное для меня состояние (услуга 1). Я пытаюсь обработать сценарии сбоя в этом случае:

  1. Я успешно обновляю состояния во внешней службе 2 и 3, и мне не удается обновить состояние в службе 4.
  2. Я успешно обновил состояния во внешней службе 2 и 3 и умер.
  3. Я успешно обновляю состояния во всех внешних службах, но мне не удается сохранить состояние в моей локальной системе.

Скажем, что сервис 2 производит возврат продуктов, а сервис 3 отмечает счет как оплаченный. Теперь, если я успешно выполню возврат (услуга 2), но не смогу пометить счет как оплаченный (услуга 3), у меня будут серьезные деловые последствия во время финансовой сверки.

Во всех этих случаях есть ли правильный способ справиться с ошибочными сценариями?

1 Ответ

1 голос
/ 11 марта 2019

Надлежащим способом является использование распределенных транзакций и двухфазная фиксация, например, применение протокола XA.

...