数据库事务特点ACID
1、原子性(atomicity):不可分割,事务中包括的诸操作要么都做,要么都不做。
2、一致性(consistency):在事务开始以前,数据库处于一致性的状态,事务结束后,数据库也必须处于一致性的状态;一致性与原子性是密切相关的。
3、隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
4、持久性(durability)也叫永久性(permanence):指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
分布式理论
当单个数据库的性能产生瓶颈时,我们可能会对数据库进行分区,分区之后不同的库就处于不同的服务器上了,这个时候单个数据库的ACID已经不能适应这种情况了,这时我们就需要引入一个新的理论来适应这种情况,就是 CAP 原则或者叫CAP定理。
CAP
CAP理论是说对于分布式数据存储,最多只能同时满足一致性(C,Consistency)、可用性(A, Availability)、分区容错性(P,Partition Tolerance)中的两者。
1、一致性,是指对于每一次读操作,要么都能够读到最新写入的数据,要么错误。
2、可用性,是指对于每一次请求,都能够得到一个及时的、非错的响应,但是不保证请求的结果是基于最新写入的数据。
3、分区容错性,是指分布式环境中部分节点因网络原因而彼此失联后,即与其他节点形成“网络分区”时,系统仍能正确地提供服务的能力。
如果要保证强一致性,那么在部分节点因网络原因不可用,系统就不可用;
如果要保证高可用性,那么就只能提供弱一致性,保证最终一致。需要在一致性与可用性之间权衡。
在这么严苛的规定下,于是提出了BASE来削弱这些要求。BASE是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性,但每个应用都可以根据自身的业务特点,采用适当的方法来使系统达到最终一致性。
BASE弱一致性协议
1、基本可用(Basically Available):系统能够基本运行、一直提供服务。
2、软状态(Soft-state):系统不要求一直保持强一致状态(允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同的数据副本之间进行数据同步的过程存在延时)
3、最终一致性(Eventual consistency):强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
转载请注明:牛哥678 » 分布式事务系列探讨二:基础理论ACID、CAP和最终一致性