- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
fast paxos算法与Zookeeper leader选举源代码分析
雷明
leiming0571@
1、paxos算法
1.1、分布式一致性问题
在分布式系统中,有多个节点(服务器),这些节点可以为客户(客户端)提供某种服务。这至少带来两个好处:一方面可以提供性能,另一方面可以提供容错,当部分服务器挂掉之后,不影响整个服务。
但是问题又来了:如果多个服务器节点修改同一个变量,后果会怎么样?
1.2、paxos算法
paxos算法是一个基于消息传递的一致性算法,在1990年由Lamport提出,最近被广泛的应用于分布式计算中。Google的Chubby,Apache的Zookeeper都是基于该理论实现。Paxos被认为是到目前为止唯一正确的分布式一致性算法,其他的算法都是Paxos的改进或者简化。
1.3、fast paxos算法
问题提出:在分布式系统中,需要选举出一个leader节点,只有该节点可以做出决策。问题:怎么在n个节点中选择一个作为leader?
方法一:指定某一个节点作为leader,问题:这个leader挂了怎么办?
方法二:给每个节点指定一个唯一的id,比较所有节点的id,id最大的为leader,问题:怎么知道活着的id中,哪个是最大的?
要解决的问题:
1、什么时候发起选举?
2、选举过程中,后加入的节点怎么办?
3、一个节点挂掉后重启,要发起选举,怎么办?
选举轮数的新旧:
每个节点的数据的新旧(选举结果)
有多个节点都活着,在同一轮选举中,选择哪个节点作为leader?
2、zookeeper的选举算法
2.1、概述
Zookeeper集群中,只有一个节点是leader节点,其他节点都是follower节点(实际上还有observer节点,不参与选举的投票,在这里我们先忽略,下同)。所有的更新操作,必须经过leader节点,leader节点和follower节点之间保持着数据同步和心跳。
客户端使用zookeeper时,可能会连到follower身份的server上,也可能会连到leader身份的server上。
三类角色的分工如下:
Leader:处理写请求,单点
Follower:处理客户端请求,参与投票
Observer:不参与leader选举的投票,只处理客户端请求
在一个zookeeper集群里,有多少个server是固定的,每个节点有一个唯一的id,标识它自己,另外,每个server还有用于选举的IP和port,这些都在配置文件中。一个具体的例子如下:
server.1=1:2888:3888
server.2=2:2888:3888
server.2=3:2888:3888
这里有3个server,其id分别为1、2、3。2888为节点和leader交换信息的端口,3888为选举的端口。这个节点的id,在投票时,用户标识参加竞选的节点的身份。
问题:这个leader节点是怎么确定的?
答案:zookeeper系统自己选举出来的,所有的server节点(observer除外),都参与这个选举。这样做的好处是:当现在的leader挂掉了之后,系统可以重新选举一个节点做leader。
Zookeeper的选举算法能保证:只要超过半数的节点还活着,就一定能选举出唯一个一个节点作为leader。
2.1.1、节点的状态
Zookeeper中的节点有以下三种状态(忽略observer节点):
LOOKING:初始化状态,处于选举过程中,leader还没有选出
LEADING:leader已经选出,本节点是leader
FOLLOWING:leader已经选出,本节点是follower
2.1.2、选举发生的时机
当任何一个节点进入looking状态时,选举开始,进入looking状态有如下原因:
1、节点刚启动,使自己进入选举状态
2、发现leader节点挂掉了
Zookeeper中的leader怎么知道follower还活着?follower怎么知道leader还活着?leader会定时向follower发ping消息;follower会定时向leader发ping消息。当发现无法ping通leader时,就会将自己的状态改为LOOKING,并发起新的一轮选举。处于选举模式时,zookeeper的服务不可用。
2.1.3、一个节点成为leader的条件
一个节点要成为leader,必须得到至少n/2+1(即半数以上节点)的投票,实际上,在实现时,还可以考虑其他规则,比如节点权重。
为什么要保证至少n/2+1的节点同意?因为这样能保证本节点得到多数派的支持。因为每一个节点,只能支持一个节点成为leader,因此
您可能关注的文档
最近下载
- 实验六文本文件的简单应用.doc VIP
- 厨房各作业区点心配菜冷菜间卫生控制.pdf VIP
- 生产安全管理人员考试_金属冶炼(铝及铝合金制造与铸造)_练习题及答案_共350题_第2套_2021_练习模式.pdf VIP
- 风景园林(景观设计)专业中级职称理论考试题库-上(单选题汇总).docx VIP
- 药事管理与法规课程标准.docx VIP
- IEC60664-1 2007 - 标准体系文件资料.pdf VIP
- 10J121《外墙外保温建筑构造》.pdf
- 风景园林(景观设计)专业中级职称理论考试题库-下(多选题汇总).docx VIP
- 危重患者的病情观察ppt课件.pptx VIP
- 《用字母表示数》说课稿-2024-2025学年五年级上册数学人教版[001].docx
文档评论(0)