Кто-нибудь пробовал делать?
Задача такая: нужно реплицировать данные на N реплик БД (что-то вроде multimaster, но appication level). Я хочу делать через 2PC, но из описания что-то не очень понял как это делать.
Как я понял: вначале пытаемся закоммититься по всем базам, но только еще проставляем всем записям флажок, что запись залочена (пока). Если везде закоммитилось, то коммитим второй раз, уже снимая флажок. При любой попытке доступа к залоченной записи видимо нужно по таймауту делать retry (то же самое касается и начала двухфазного коммита), таким образом будет обеспечена консистентность. Как я понял, основная проблема, это если упадет инициатор транзакции перед второй фазой и будет непонятно что делать с локами на записях.
Делаю на Java.
Еще смотрю на JTA, но я так и не понял как оно работает и что-то не очень доверяю такому решению. Может кто-то пробовал как оно? И какую реализацию посоветуете (пока смотрю на Bitronix)
Если есть предложения, как делать репликацию без двухфазного коммита, то я с удовольствием выслушаю.