参考:从Paxos到Zookeeper分布式一致性原理与实践
从ACID到CAP/BASE
ACID
事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
事务的特性
Atomicity(原子性)
事务中包含的一组操作要么全部成功执行,要么全部不执行
Consistency(一致性)
事务执行前后处于一致性状态
Isolation(隔离性)
并发环境中事物之间不能相互影响
[四个隔离级别]
读未提交
事务B可以读到事务A在没有提交时对数据的操作,出现脏读。
读已提交
事务B可以读到事务A,C提交的数据,即:一个事务内读到的数据不一致,出现不可重复读。
可重复读
事务B只能读到事务开始时刻的值V_b1,当新起一个事务B_2,读到的是V_b2可能和V_b1不一样,出现幻读。
串行化
事务B在其他事务结束前不能执行。
持久性
一旦事务提交成功,它对数据库中对应数据状态的变更就永久保存。
CAP理论
一个分布式系统不可能同时满足Consistency(一致性),Availability(可用性),Partition tolerance(分区容错),最多只能满足其中两个。
Consistency(一致性)
数据在多个副本之间保持一致。
如果某个数据后,所有用户都可以读到最新值,就认为具有强一致性。
Availability(可用性)
对于用户的每一个请求都会在有限时间内返回结果。
Partition tolerance(分区容错)
分布式系统在遇到任何网络分区故障后,仍然可以提供一致性和可用性服务。
既然分布式系统必须要有P,那么只能在A,C之间寻求平衡。
BASE理论
Basically Available(基本可用),Soft stat(软状态), Eventually consistent(最终一致性).
BASE是对CAP中C好A的权衡的结果,核心思想是即使无法做到强一致性,但是每个应用可以根据自身的特点,采取适当的方式达到最终一致性.
Basically Available(基本可用)
延长响应时间和部分服务降级.
Soft stat(软状态)
比如:除支付成功,支付失败,还有支付中(中间状态)
Eventually consistent(最终一致性)
各个副本数据最终同步