есть microservice
архитектура где для большей части каждый microservice
не зависит. Но по некоторым унаследованным причинам есть ситуация, когда нам нужно позвонить другому microservice
из другого.как откат транзакции между микросервисами?
например: следующий метод является частью Legal Service
@Autowired
public ServiceManager UserServiceManager;
public void updateUserLegalData(){
//do db update of Legal info for the user
userServiveManager.setAcceptedLegal(true);
}
Есть два db transactions
происходит выше. один обновляет legalService db, а другой обновляет UserService db. ПРИМЕЧАНИЕ. userService - это microservice
, работающий на отдельной виртуальной машине.
Мы видим ситуации, когда юридическая служба db обновляется, но вызывает функцию userService сбой (Internal server error
). поэтому это оставляет приложение в несогласованном состоянии. Как мы можем исправить это в рекомендуемом порядке?
Благодаря
спасибо. есть ли ссылка на вашу книгу? –
http://www.apress.com/9781484207949. Но это еще не закончено. Работа над последней главой в настоящее время. – luboskrnac
> Операции JTA медленны и в настоящее время часто рассматриваются как архитектурные анти-шаблоны' - я думаю, что обратное верно. В эти дни транзакции JTA оптимизированы настолько, что для их использования едва ли накладные расходы. Когда вы используете только один транзакционный ресурс или один ресурс tx, а также один-другой LRCO, можно также применить любые возможные затраты, связанные с двухфазными фиксациями. –