Управление транзакциями в SOA

Сервисы SOA должны быть автономными сервисами, но на практике нам нужно организовать эти сервисы для выполнения некоторых бизнес-процессов.

Теперь, чтобы процесс и данные были непротиворечивыми, нам нужно убедиться, что все сервисы выполняются или ни один из них не выполняется.

Один из способов реализации — внедрить логику «компенсации» для каждой службы и вызвать ее, если в процессе/предыдущей службе возникла какая-то проблема.

Есть ли лучший способ или какой-то стандарт сделать то же самое, например, убрать контекст транзакции и реализовать что-то вроде двухфазной фиксации?


person Sandeep Jindal    schedule 17.04.2012    source источник


Ответы (2)


Это зависит от услуг, к которым вы обращаетесь. В некоторых у вас не будет возможности произвести компенсацию, в других у вас не будет возможности контролировать транзакцию, а в других у вас не будет вообще никакой альтернативы.

Оба обработчика компенсации и двухфазная фиксация (транзакции XA) являются допустимыми механизмами для управления транзакциями.

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

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

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

person sweetfa    schedule 17.04.2012

Вы можете использовать обработчики ошибок и обработчики компенсации, определенные в спецификации WS-BPEL 2.0 (которая является стандартом, предлагающим способ описания и организации взаимодействия между веб-службами), поэтому он стандартным образом отделяет бизнес-логику от логики компенсации.

  • Ссылка на обработку ошибок в спецификации BPEL
  • запись в блоге о том, как написать обработчик компенсации на BPEL
person keheliya    schedule 17.04.2012