ZooKeeper 入门 一致性

ACID是什么?四种隔离级别?默认隔离级别是?

CAP:一致性 可用性 分区容错性

BASE理论:基本可用 弱状态 最终一致性

(PS:Undo Redo不提交,也就意味数据未写到磁盘只是写到了事务日志内且资源一直被加锁)

2PC?(提交事务请求{可否事务?};执行事务提交{有No全部rollback并反馈};)

3PC?(CanCommit{询问是否可以提交并返回各点响应} ; PreCommit{预提交并返回成功与否的响应,有否就全部参与者都中断并rollback} ; DoCommit{正式事务提交、中断、rollback...} ;)

2PC 3PC 各自优缺点?(同步阻塞 单点问题 数据不一致 过于保守;)(解决了单点问题,但是会引入不一致的问题{由于通信中断参与者依然会commit})

Paxos的理解

一个一致性算法需要保证的点是:被提出的提案中仅有一个会被选定,没有提出提案就不会被选定,提案被选定后进程可以获取被选定的提案信息

对于这个一致性算法需要的安全性是:只有被提出的提案才能被选中,只能选一个提案,如果进程认为提案被选定了那这个提案必须是被选中的那个

提案选定分为两个阶段:(小于提案编号的提案被acc拒接,大于该提案编号的提案的val为提案的val)

  1. proposer选一个提案发送给一个acc组,一个acc收到一个Mn的提案,返回已经批准过的最大编号的提案(提案小于Mn,且空也可即代表还未批准过),如果批准过的比Mn大不响应
  2. 对于Mn,proposer收到半数以上acc发出的响应后,就发送accept请求给Acceptor;当acc收到accept请求后只要没有对更大的M响应过,就可以通过。

Learner的提案获取过程分三种方法:

  1. 每个acceptor一旦acc一个提案,和所有learn通信,通信次数:Nacc * Nlearn
  2. acceptor只和一个主learner通信,主learner通信其余learner,次数:Nacc + Nlearn。缺点:主learner可能崩溃
  3. 和多个learner组成的主learner通信,再由这个告诉其余learner。缺陷:主learner组越大,通信越复杂

保证算法活性:(有可能两个proposal分别生成提案,均完成阶段一,没法完成阶段二,进入死循环)

  • 选定主Proposal才能提出提案
   
上一篇:hdu2007


下一篇:Game of Credit Cards