面试题:请详细谈谈paxos算法?
Posted felix技术分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题:请详细谈谈paxos算法?相关的知识,希望对你有一定的参考价值。
面试官:zab是解决分布式数据一致性,那大名鼎鼎的paxos也是解决分布式数据一致性的,
请你详细谈谈paxos算法?
小宏:我算法平时没怎么研究,不太了解
面试官:没事,我们今天就面试到这里,你先回家等通知吧
小明:paxos有几个基本概念,提议编号,提议值,提议=提议编号+提议,3个角色,提议发起者(proposer),提议接收者(Acceptor),提议学习者(Leaner)
一句话解释就是:发起者讲提议发到所有的接收者,包括自己,如果有超过半数获得批准,最终获得一致性的取值,且后序不允许更改。
具体的操作包括两个阶段一个是准备阶段,一个是提议者选择值阶段。
1、准备阶段
提议者会选择一个提议编号,向所有的接受者广播自己提议编号
这个阶段接收者可能接收到多个提议编号,接受者最终会承诺选择提议编号最大的提议者的提议。
2、提议者选择值阶段
Proposer在第一阶段得到大多数接收者支持以后,提议者会把自己想要提议值+提议编号提交给接收者,如果未超过半数响应,则提议失败,如果超过半数响应,则提议成功
这时候提议者可能会接收到多个提议,接受者会答应自己在第一阶段承诺的提议,并拒绝其他提议。
面试官:好的,那你知道raft协议跟paxos有什么区别吗?
小明:两者都是解决分布式系统数据一致性的协议,但是paxos难以理解,更难以实现,raft注重可理解性和落地性。
面试官:那你详细谈谈raft协议吧
小明:(内心:妈妈的,还好我早有准备),raft协议也有3种角色,leader整个集群中只有 Leader 可以处理 client 发送过来的请求,其他非 Leader 节点即使接收到请求也必须将其转发到 Leader 节点进行处理,follower类似于选民,完全被动;candidate候选者,参与选举leader。
整个过程包括两个阶段,选举和数据同步
1、选举阶段
任何一个节点都能成为一个候选者Candidate,它向其他节点发出选自己的为leader的请求,其他节点同意,就返回Ok,包括自己如果有超过半数的同意,那就成为新的leader。如果两个候选者的票数相同,那就等待一段时间后,再重新选举leader
2、数据同步阶段
Raft中的事务消息是通过的RPC来完成的,通过心跳来维持。leader接收到事务数据后,同步给follower,follower当把数据写入磁盘文件之后,返回commit ok,当大多数都返回成功之后,在下一次心跳中会通知follower提交事务。
面试官:你什么时候来上班
以上是关于面试题:请详细谈谈paxos算法?的主要内容,如果未能解决你的问题,请参考以下文章
BAT 面试题宝库附详尽答案解析图解分布式一致性协议 Paxos 算法
JAVA面试题 请谈谈你对Sychronized关键字的理解?
python面试题之请谈谈.pyc文件和.py文件的不同之处