读书笔记:从Paxos到Zookeeper 分布式一致性原理与实践

ACID和四种隔离级别回顾:

ACID
1,原子性 Atomic:
事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行中,只能出现以下两个状态之一:
*要么全部成功
*要么全部失败
事务中任何一个小操作的失败,都会导致整个事务的事变,已经被执行的操作会被撤销并且回滚,只有所有的操作都成功,事务才是成功。

2,一致性 Consistency:
事务的执行不能破坏数据库数据的完整性和一致性。理解为:前后都是有意义的数据。

3,隔离性 Isolation:
在并发环境中,事务的执行是相互隔离的。不同的事务操作相同的数据时,每个事务有各自完整的数据空间。

4,持久性 Durability:
事务一旦提交,改变是永久的。

四种隔离级别

理解:假设一个事务B需要用到数据,事务A和C也在操作这个数据。
A事务将数据从1变到10,C在这之后从10变到20.
1,读未提交:
B在A或者C事务进行的阶段,还未提交时,就已经可以读到对应的值。
因此B可能读出1,2,3,4,5,6……20
2,读已提交:
只有在事务提交之后,才能读取到对应的值。
因此B只能读1(A还未提交),10(A已经提交,C未提交),20(C已经提交)。
3,可重复读:
如果在A+C事务进行的时候,B事务也在同时进行着。
那么对于B,初始读到的值是1,不论A,C是否已经提交,对于B事务本身,只要它自己没有提交,就一定读到的是1。
4,串行化:
所有事务排队执行,最稳妥,效率也最差。
读书笔记:从Paxos到Zookeeper 分布式一致性原理与实践
读书笔记:从Paxos到Zookeeper 分布式一致性原理与实践
幻读:主要是因为insert操作。
不可重复读:由于update或者是delete。

分布式CAP理论:
1,一致性 consistency:
在分布式环境下,数据的多个副本之间能否保持一致的特性。
如果在一个节点上进行了数据的更新,但是没有同步到其他节点上,于是在第二个节点读取的数据依然是老数据(脏数据)。
强一致性:指在一个节点更新成功后,所有用户都可以读取到最新的值,这样的系统就被认为拥有强一致性。
2,可用性 availability:
系统提供的服务必须一直处于可用的状态,对于一个用户操作请求,总是能够在有限的时间内返回结果。
3,分区容错性 partition tolerance: