Я считаю, что большинство людей знают, что такое 2PC (двухфазный протокол фиксации) и как использовать его в Java или большинстве современных языков. В основном, он используется, чтобы убедиться, что транзакции синхронизированы, когда у вас есть 2 или более БД.
Предположим, у меня есть две базы данных (A и B) с использованием 2PC в двух разных местах. Прежде чем A и B готовы совершить транзакцию, обе БД сообщают менеджеру транзакций о том, что они готовы к фиксации. Таким образом, когда менеджер транзакций будет подтвержден, он отправит сигнал обратно в и B, чтобы они пошли дальше.
Вот мой вопрос: пусть А получил сигнал и совершил транзакцию. Как только все будет завершено, B вот-вот сделает то же самое, но кто-то отключит кабель питания, вызывая остановку всего сервера. Когда B снова в сети, что сделает B? И как это сделать B?
Помните, что A зафиксировано, но B нет, и мы используем 2PC (так, дизайн 2PC перестает работать, не так ли?)