Как написать собственный атомарный метод в Java?

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

Как я должен ответить на этот вопрос, если я получу этот вопрос в интервью?


person Joe    schedule 22.09.2018    source источник


Ответы (1)


Базы данных SQL поддерживают этот сценарий посредством распределенных транзакций. Если бы вы могли реализовать свое требование на уровне базы данных (т.е. выполнить свой атомарный метод в распределенной транзакции), это был бы самый простой способ добиться этого.

Другой подход (хотя и значительно более сложный) заключается в самостоятельной реализации протокола распределенных транзакций. Протокол двухфазной фиксации обычно используется базами данных SQL. См. https://en.wikipedia.org/wiki/Two-phase_commit_protocol. подробнее.

person Community    schedule 23.09.2018