我们都知道普通的事务中有原子性,一致性,隔离性,持久性。而分布式事务中也有这些属性,下面我们就来介绍一下分布式事务与普通的事务有何不同之处。
分布式事务
随着分布式计算的发展,事务在分布式中也得到了广泛的应用。在单机数据库中,我们很容易能够实现桃满足ACID特性的事务处理系统,但在分布式数据库中,数据分散在各个不同的机器上,如何对这些数据进行分布式的事务处理具有非常大的挑战。分布式中会有机器宕机和各种网络异常。尽管存在这种种分布式问题,但是在分布式计算领域,为了保证分布式应用程序的可靠性,分布式事务是无法回避的。
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点上。通常一个分布式事务中会涉及对多个数据源或业务系统的操作。
我们可以设想一个最典型的分布式事务场景:一个跨银行的转账操作涉及调用两个异地的银行服务,其中一个是本地银行提供的取款服务,两个则是目标银行提供的存款服务,这两个服务本身是无状态并且是相互独立的,共同构成了一个完整的分布式事务。如果从本地银行取款成功,但是因为某种原因存款服务失败了,那么就必须回滚到取款钱的状态,否则用户可能会发现自己的钱不翼而飞了。
从上面这个例子中,我们可以看到,一个分布式事务可以看作是由多个分布式的操作序列组成的,例如上面例子中的取款服务和存款服务,通常可以把这一系列的分布式的操作序列成为子事务。因此,分布式事务也可以被定义为一种嵌套型的事务,同时也就局用了ADID事务特性。但由于在分布式事务中,各个子事务的执行是分布式的,因此要实现一种能够保证ACID特性的分布式事务处理系统就显得格外复杂。
CAP和BASE理论
对于本地事务处理或者是集中式的事务处理系统,很显然我们可以采用已经被实践证明很成熟的ACID模型来保证数据的严格一致性。对于一个高访问量、高并发的互联网分布式系统来说,如果我们期望实现一套严格满足ACID特性的分布式事务,很可能出现的情况就是在系统的可用性和严格一致性之间出现冲突——因为我们要求分布式系统具有严格一致性时,很可能需要牺牲掉系统的可用性。但毋庸置疑的一点是,可用性优势一个所有消费者不允许我们讨价还价的系统属性,比如说像淘宝网这样的在线购物网站,就要求它能够&*24小时不间断地对外提供服务,而对于一致性,则更加是所有消费者对于一个软件系统的刚需。因此在可用性和一致性之间永远无法存在一个两全其