ZooKeeper 入门 一致性
作者:互联网
ACID是什么?四种隔离级别?默认隔离级别是?
CAP:一致性 可用性 分区容错性
BASE理论:基本可用 弱状态 最终一致性
(PS:Undo Redo不提交,也就意味数据未写到磁盘只是写到了事务日志内且资源一直被加锁)
2PC?(提交事务请求{可否事务?};执行事务提交{有No全部rollback并反馈};)
3PC?(CanCommit{询问是否可以提交并返回各点响应} ; PreCommit{预提交并返回成功与否的响应,有否就全部参与者都中断并rollback} ; DoCommit{正式事务提交、中断、rollback...} ;)
2PC 3PC 各自优缺点?(同步阻塞 单点问题 数据不一致 过于保守;)(解决了单点问题,但是会引入不一致的问题{由于通信中断参与者依然会commit})
Paxos的理解
一个一致性算法需要保证的点是:被提出的提案中仅有一个会被选定,没有提出提案就不会被选定,提案被选定后进程可以获取被选定的提案信息
对于这个一致性算法需要的安全性是:只有被提出的提案才能被选中,只能选一个提案,如果进程认为提案被选定了那这个提案必须是被选中的那个
提案选定分为两个阶段:(小于提案编号的提案被acc拒接,大于该提案编号的提案的val为提案的val)
- proposer选一个提案发送给一个acc组,一个acc收到一个Mn的提案,返回已经批准过的最大编号的提案(提案小于Mn,且空也可即代表还未批准过),如果批准过的比Mn大不响应
- 对于Mn,proposer收到半数以上acc发出的响应后,就发送accept请求给Acceptor;当acc收到accept请求后只要没有对更大的M响应过,就可以通过。
Learner的提案获取过程分三种方法:
- 每个acceptor一旦acc一个提案,和所有learn通信,通信次数:Nacc * Nlearn
- acceptor只和一个主learner通信,主learner通信其余learner,次数:Nacc + Nlearn。缺点:主learner可能崩溃
- 和多个learner组成的主learner通信,再由这个告诉其余learner。缺陷:主learner组越大,通信越复杂
保证算法活性:(有可能两个proposal分别生成提案,均完成阶段一,没法完成阶段二,进入死循环)
- 选定主Proposal才能提出提案
标签:acc,选定,入门,ZooKeeper,learner,通信,Mn,一致性,提案 来源: https://www.cnblogs.com/tillnight1996/p/12874737.html