- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
paxos实现.pdf
paxos paxos ppaaxxooss 实现 本文主要介绍zookeeper 中zookeeper Server leader 的选举,zookeeper 在选举leader 的 时候采用了paxos 算法(主要是fast paxos),这里主要介绍其中两种:LeaderElection 和 FastLeaderElection. 我们先要清楚以下几点 • 一个Server 是如何知道其它的Server 在zookeeper 中,一个zookeeper 集群有多少个Server 是固定,每个Server 用于选举的IP 和PORT 都在配置文件中 • 除了IP 和PORT 能标识一个Server 外,还有没有别的方法 每一个Server 都有一个数字编号,而且是唯一的,我们根据配置文件中的配置来对每一个 Server 进行编号,这一步在部署时需要人工去做,需要在存储数据文件的目录中创建一个文 件叫myid 的文件,并写入自己的编号,这个编号在处理我提交的value 相同很有用 • 成为Leader 的必要条件 获得n/2 + 1个Server 同意(这里意思是n/2 + 1个Server 要同意拥有zxid 是所有Server 最 大的哪个Server) • zookeeper 中选举采用UDP 还是TCP zookeeper 中选举主要是采用UDP,也一种实现是采用TCP,在这里介绍的两种实现采用的 是UDP • zookeeper 中有哪几种状态 LOOKING 初始化状态 LEADING 领导者状态 FOLLOWING 跟随者状态 • 如果所有zxid 都相同(例如: 刚初始化时),此时有可能不能形成n/2+1个Server,怎 么办 zookeeper 中每一个Server 都有一个ID,这个ID 是不重复的,而且按大小排序,如果遇到这 样的情况时,zookeeper 就推荐ID 最大的哪个Server 作为Leader • zookeeper 中Leader 怎么知道Fllower 还存活,Fllower 怎么知道Leader 还存活 Leader 定时向Fllower 发ping 消息,Fllower 定时向Leader 发ping 消息,当发现Leader 无法ping 通时,就改变自己的状态(LOOKING),发起新的一轮选举 名词解释 zookeeer Server: zookeeper 中一个Server,以下简称Server zxid(zookeeper transtion id): zookeeper 事务id,他是选举过程中能否成为leader 的关 键因素,它决定当前Server 要将自己这一票投给谁(也就是我在选举过程中的value,这只是 其中一个,还有id) myid/id(zookeeper server id): zookeeper server id ,他也是能否成为leader 的一个因素 epoch/logicalclock:他主要用于描述leader 是否已经改变,每一个Server 中启动都会有一个 epoch,初始值为0,当 开始新的一次选举时epoch 加1,选举完成时 epoch 加1。 tag/sequencer:消息编号 xid:随机生成的一个数字,跟epoch 功能相同 Fast Paxos 消息流向图与Basic Paxos 的对比 消息流向图 • basic paxos 消息流向图 Client Proposer Acceptor Learner | | | | | | | X| | | | | | Request | X|-|-| | | Prepare(N)//向所有Server 提议 | |X--X--X | | Promise(N,{Va,Vb,Vc})//向提议人回复是否 接受提议(如果不接受回到上一步) | X|-|-| | | Accept!(N,Vn)//向所有人发送接受提议消息 | |X--X--X|-| Accepted(N,Vn)//向提议人回复自己已经接 受提议) |X--X Response | | | | | | | • fast paxos 消息流向图
文档评论(0)