目录
一、一致性概括
二、一致性的类型
三、弱一致性、强一致性、多数派模型
四、强一致性模型(同步)衍生出的问题
一、一致性概括
在分布式系统中,一致性(Consistency)是指多副本(Replications)问题中的数据一致性。
二、一致性的类型
- 事务一致性;
- 数据一致性
本文所讨论的是分布式环境中的数据一致性问题;
三、弱一致性、强一致性(多数派模型)
3-1.弱一致模型:
弱一致性指的是数据复制的过程是异步的。数据更新后,能容忍后续的访问只能访问到部分或者全部访问不到,我们经常提到的最终一致性就是弱一致性的一致。
- DNS
- GOSSIP
3-2.强一致性
强一致性指的是数据复制的过程是同步的。任何一次读都能读到某个数据的最近一次写的数据,系统中的所有进程,看到的操作顺序,都和全局时钟下的顺序一致。
- 同步
- Paxos
- Raft(multi paxos)
- ZAB(multi paxos)
四、强一致性模型(同步)衍生出的问题
问题:一个节点异常了,master会被阻塞,整个集群不可用,虽然保证了一致性,但不满足分区容错性了。 即CAP理论中不满足A,即不满足可用性。
解决方式:为了解决同步模型中的可用性问题,所以引入了paxos理论。
五、强一致性模型(多数派)
分布式应用中,强一致性模型指的都是强一致性多数派模型,而多数派模型理论的基础就是paxos,ZAB和FAFT协议都是属于paxos模型的实现协议。
多数派模型的重点是:每次写都保证写入大于[N/2]+1个节点,每次读都保证大于[N/2]+1个节点中读。
其主要理论和实现包括:
六、多数派模型需要解决的问题
- 决策模型:Proposer、Acceptor、Learner。(paxos中专门讲解)
- 并发情况下,日志的有序性。
如上图中,两个客户端分别对两个NODE发起请求,一个是+5,另外一个是+0,如果数据同步不能够形成顺序,则不同节点上,数据最终的结果会不一致。即第一第二结果为0,第三个节点为5。