分布式事物ABC

事务处理的四个至关重要的特性

原子性 (Acomicity)

事物要么完全成功并提交,要么根本不执行。

示例:A转账给B 100元,最后要么A账号少了100元、B账号增加了100元,要么转账失败,A和B账户都没有变化。而不应该出现A账户减少了100元,但B账户没有变化;或者A账户没有变化,但B账户增加了100元的情况。

一致性 (Consistency)

熟悉数据库的朋友都知道,数据库的一致性包括:

  • 所有的主键值都是唯一的;
  • 数据库具有引用完整性,即记录只记录存在的对象;
  • 某些数据只能处于特定的范围(比如年龄小于150)

这里的事务一致性表示:对数据库单独执行事务的时候,如果数据库之前是一致的,执行完了之后也应该是一致的。

这里需要强调的是:和原子性、隔离性和持久性不通,一致性需要由事务程序和执行这些事务程序的TP系统共同负责。

隔离性(Isolation)

如果一个系统运行一个事务集的效果与系统一次运行其中的一个事务的效果相同,那么就说这个事务集是可隔离(可串行的serializable)。

举例:两个事物A、B同时从一个银行账户取最后100元,如果能保证A、B一起执行的效果核A先B后或A后B先的效果一样,就说这类事物是可串行的。

持久性(Durability)

持久性是指当事物执行完毕,所有的更新都存储在稳定的存储器上,不受电源故障或操作系统对影响。之所以需要这样,是因为每个事物都会向用户提供服务,相当于用户核提供服务的企业直接的合同。

举例:A向B转账100元完成之后,A的账户会少100元,B的账户多100元,这个信息需要持久化到非易失性存储器上,以保证不会随着系统重启、异常掉电而丢失记录。

两阶段提交

猜你喜欢

转载自blog.51cto.com/xiamachao/2464434