保证这两个项目是保存的,或者没有保存 - 跨服务器

时间:2014-06-04 16:28:20

标签: algorithm distributed-transactions

假设在某台机器上运行的进程P有一些数据X必须保存在MySql_X(在不同的机器上)和一些必须保存在Mysql_Y中的数据Y(在另一台机器上)机)。如何保证同时保存XY,或者两者都不保存?什么是算法?

例如(在愚蠢的伪代码中):

X_transaction = MySql_X.startTransaction(save(X)) //returns null if failure to start transaction 
Y_transaction = MySql_Y.startTransaction(save(Y))

if X_transaction && Y_transaction {
  X_transaction.commit()
  // what if failure happened here?
  Y_transaction.commit()
}

这显然不起作用。因为失败可能发生在上面提到的那一行的P或MySql_Y中,然后只会保存X.

0 个答案:

没有答案