极客大学架构师训练营 0 期 week 06 学习笔记
本周重新学习了CAP理论,了解了Zookeeper以及Cassandra在保证集群高可用的情况下是如何解决数据不一致以及投票冲突的问题。
CAP理论:
C: Consistence
数据的一致性,表示在一个节点写入数据,在其他的节点就能读到该写入的数据
A: Avaliability
可用性,任何时候该系统都是可以使用的,
P: Patition Tolaronce
分区容错性,在现有网络的基础上,系统的分区是不可避免的
当系统由于网络原因形成分区P后,在不同的网络分区中,数据是不一致的,这时候如果要保证C,则系统不可用,解决分区问题后保证没有分区才能保证C,这就是选择的CP,放弃了A;
同理,这时如果在发生了P的情况下选择了系统可用性A,则数据的一致性不能保证,各个分区都在更新数据,每个分区的数据不一致。
ZAB协议与paxos协议
联系:
都存在一个类似于Leader进程的角色,由其负责协调多个Follower进程的运行。
Leader进程都会等待超过半数的Follower做出正确的反馈后,才会将一 个提议进行提交。
在ZAB协议中,每个Proposal中都包含了一个epoch值,用来代表当前的Leader周期,在Paxos
算法中,同样存在这样的-个标识,名字为Ballot。
区别:
Paxos算法中,新选举产生的主进程会进行两个阶段的工作,第一阶段称为读阶段,新的主进程和其他进程通信来收集主进程提出的提议,并将它们提交。第二阶段称为写阶段,当前主进程开始提出自己的提议。
ZAB协议在Paxos基础上添加了同步阶段,此时,新的Leader会确保存在过半的Follower已经提交了之前的Leader周期中的所有事务Proposal。这一同步阶段的引入,能够有效地保证Leader在新的周期中提出事务Proposal之前,所有的进程都已经完成了对之前所有事务Proposal的提交。
总的来说,ZAB协议和Paxos算 法的本质区别在于,两者的设计目标不太一样,ZAB协议主要用于构建一个高可用的分布式数据主备系统,而Paxos算 法则用于构建-个分布式的一致性状态机系统
评论