当前位置: 首页 > news >正文

dw怎么做滚动视差的网站广告设计公司

dw怎么做滚动视差的网站,广告设计公司,高端网站的建设,怎样建设网站 需要哪些条件ZAB协议 ZooKeeper是如何选举领导者的。 首先我们来看看ZooKeeper是如何实现成员身份的? 在ZooKeeper中,成员状态是在QuorumPeer.java中实现的,为枚举型变量 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING }其实&…

ZAB协议

ZooKeeper是如何选举领导者的。

首先我们来看看ZooKeeper是如何实现成员身份的?
在ZooKeeper中,成员状态是在QuorumPeer.java中实现的,为枚举型变量

public enum ServerState {
LOOKING,
FOLLOWING,
LEADING,
OBSERVING
}

其实,ZooKeeper没有直接定义成员身份,而是用了对应的成员状态来表示,比如,处于FOLLOWING状态的节点为跟随者。如果你想研究相关成员的功能和实现,那么可以把对应的成员状态作为切入点来研究。比如,你想研究领导者的功能实现,可以在代码中搜索LEADING关键字,然后研究相应的上下文逻辑,进而得到自己想要的答案。
如果跟随者将自己的状态从跟随者状态变更为选举状态,就表示跟随者在发起领导者选举,那么在ZooKeeper中,领导者选举是如何实现的呢?
领导者选举是在FastLeaderElection.lookForLeader()中实现的。其核心实现流程如图所示。
在这里插入图片描述

为了更好地理解这个流程,我们来一起走读下核心代码:

  • 1.在集群稳定运行时,处于跟随者状态的节点会调用Follower.followLeader()函数周期性地读数据包和处理数据包,如代码所示
QuorumPacket qp = new QuorumPacket();
while (this.isRunning()) {
//读取数据包
readPacket(qp);
// 处理数据包
processPacket(qp);
}
  • 2.当跟随者检测到连接到领导者的读操作超时时(比如领导者节点故障了),它会抛出异常(Exception),跳出上面的读取数据保和处理数据保的循环,并将节点状态变更为选举状态。如代码所示
public void run() {
case FOLLOWING:
......
finally {
// 关闭跟随者节点
follower.shutdown();
setFollower(null);
// 设置状态为选举状态
updateServerState();
}
break;
......
}
  • 3.当节点处于选举状态时,它将调用makeLEStrategy().lookForLeader()函数(实际对应的函数为FastLeaderElection.lookForLeader())发起领导者选举,如代码所示
setCurrentVote(makeLEStrategy().lookForLeader());
  • 4.在FastLeaderElection.lookForLeader()函数中,节点需要对逻辑时钟(也就是选举的轮次)的值执行加1操作,表示开启一轮新的领导者选举,然后创建投票提案(默认推荐自己为领导者)并通知所有节点,如代码所示
synchronized(this) {
// 对逻辑时钟的值执行加一操作
logicalclock.incrementAndGet();
// 创建投票提案,并默认推荐自己为领导者
updateProposal(getInitId(), getInitLastLoggedZxid(), getPeerEpoch());
}
// 广播投票信息给所有节点
sendNotifications();
  • 5.当节点处于选举状态时,它会周期性地从队列中读取接收到地投票信息,直到选举成功,如代码所示
while((self.getPeerState() == ServerState.LOOKING) && (!stop)) {
// 从队列中读取接收到地投票信息
Notification n = recvqueue.poll(notTimeout, TimeUnit.MILLISECONDS);
......
}
  • 6.当接收到新的投票信息时,节点会进行领导者PK,来判断谁更适合当领导者。如果投票信息中提议的节点比自己提议的节点更适合作为领导者,
    则该节点会更新投票信息,推荐投票信息中提议的节点作为领导者,并广播给所有节点,如代码所示
else if (totalOrderPredicate(n.leader, n.zxid,n.peerEpoch,proposedLeader, proposedZxid, proposedEpoch)) {
// 如果投票信息中提议的节点比自己提议的节点更适合作为领导者,则更新投票信息
// 并推荐投票信息中提议的节点
updateProposal(n.leader,n.zxid,n.peerEpoch);
// 将新的投票信息广播给所有节点
sendNotifications();
}
  • 7.如果自己提议的领导者赢得大多数选票,则执行步骤8,变更节点状态,退出选举,如果自己提议的领导者仍未赢得大多数选票,则执行步骤5,继续从接收队列中读取新的投票信息。
  • 8.最后,当节点提议的领导者赢得大多数选票时,则节点会根据投票结果,判断并变更节点状态(如变更为领导者或跟随者),然后退出选举,如代码所示
if (voteSet.hasAllQuorums()) {
......
// 根据投票结果,判断并设置节点状态
setPeerState(propsedLeader, voteSet);
// 退出领导者选举
Vote endVote = new Vote(proposedLeader, proposedZxid, logicalclock.get(), proposedEpoch);
leaveInstance(endVote);
return endVote;
......
}

注意

这里只是演示了一种选举情况,还有更多情况需要实践,比如接收到来自逻辑时钟的值比当前节点的值小的节点的投票哦信息,再比如接收到来自领导者的投票信息

如何从故障中恢复

在前面我们提到了ZAB协议的领导者选举,在我看来,它只是选举了一个适合当领导者的节点,然后把这个节点的状态设置成LEAEDING状态。此时,这个节点还不能作为主节点处理写请求,也不能使用领导职能(比如,它没办法阻止其他"领导者"广播提案)。也就是说,集群还没有从故障中恢复过来,而成员发现和数据同步会解决这个问题。
总的来说,成员发现和数据不同不仅让新领导者正式成为领导者,确立了它的领导关系,还解决了个副本数据冲突的问题,实现了数据副本的一致性,使集群能够正常处理写请求,这里需要注意的是:

  • 1.确立领导关系是指在成员发现(DISCOVERY)阶段,领导者和大多数跟随者建立连接,并再次确认各节点对自己当选领导者没有异议,从而确立自己的领导关系
  • 2.处理冲突数据是指在数据同步(SYNCHRONIZATION)阶段,领导者以自己的数据为准,解决各节点数据副本不一致的问题。
    理解这两点,有助于更好地理解ZooKeeper如何恢复故障,以及当主节点崩溃时,哪些数据会丢失、哪些数据不会丢失的原因等。换句话说,通过上述内容,我们能更好地理解ZooKeeper的节点故障容错能力

文章转载自:
http://scleroderma.rqjL.cn
http://lavender.rqjL.cn
http://pistou.rqjL.cn
http://guayaquil.rqjL.cn
http://immelodious.rqjL.cn
http://imperator.rqjL.cn
http://canoeing.rqjL.cn
http://hylophagous.rqjL.cn
http://xerogram.rqjL.cn
http://triplex.rqjL.cn
http://less.rqjL.cn
http://intelligible.rqjL.cn
http://joining.rqjL.cn
http://ketogenic.rqjL.cn
http://characterless.rqjL.cn
http://traversable.rqjL.cn
http://pathos.rqjL.cn
http://pitometer.rqjL.cn
http://difformity.rqjL.cn
http://docetic.rqjL.cn
http://unmix.rqjL.cn
http://gasogene.rqjL.cn
http://backflash.rqjL.cn
http://noninfected.rqjL.cn
http://relievo.rqjL.cn
http://usrc.rqjL.cn
http://outrace.rqjL.cn
http://hermitian.rqjL.cn
http://wost.rqjL.cn
http://organ.rqjL.cn
http://salp.rqjL.cn
http://hallux.rqjL.cn
http://riddance.rqjL.cn
http://piefort.rqjL.cn
http://wardship.rqjL.cn
http://zoysia.rqjL.cn
http://passiontide.rqjL.cn
http://subfuscous.rqjL.cn
http://semitranslucent.rqjL.cn
http://junketing.rqjL.cn
http://sorceress.rqjL.cn
http://allusive.rqjL.cn
http://peristaltic.rqjL.cn
http://tumbril.rqjL.cn
http://alnico.rqjL.cn
http://hypnogenetically.rqjL.cn
http://hhd.rqjL.cn
http://altricial.rqjL.cn
http://metalingual.rqjL.cn
http://abgrenzung.rqjL.cn
http://leben.rqjL.cn
http://dowthcory.rqjL.cn
http://renewed.rqjL.cn
http://micromere.rqjL.cn
http://launder.rqjL.cn
http://squish.rqjL.cn
http://jiangxi.rqjL.cn
http://hospitality.rqjL.cn
http://naw.rqjL.cn
http://cognize.rqjL.cn
http://wassat.rqjL.cn
http://piscataway.rqjL.cn
http://nadge.rqjL.cn
http://micropuncture.rqjL.cn
http://becoming.rqjL.cn
http://aerostatics.rqjL.cn
http://probatory.rqjL.cn
http://sexiness.rqjL.cn
http://worldful.rqjL.cn
http://phrensy.rqjL.cn
http://chewink.rqjL.cn
http://semibull.rqjL.cn
http://craniopagus.rqjL.cn
http://smashing.rqjL.cn
http://nis.rqjL.cn
http://regressive.rqjL.cn
http://gastroesophageal.rqjL.cn
http://cubical.rqjL.cn
http://denunciator.rqjL.cn
http://cge.rqjL.cn
http://illuminati.rqjL.cn
http://icarian.rqjL.cn
http://snifty.rqjL.cn
http://needlepoint.rqjL.cn
http://lombok.rqjL.cn
http://mangy.rqjL.cn
http://fanciless.rqjL.cn
http://tigrish.rqjL.cn
http://naked.rqjL.cn
http://recalcitration.rqjL.cn
http://thermotics.rqjL.cn
http://amtrak.rqjL.cn
http://seggie.rqjL.cn
http://toyland.rqjL.cn
http://belgravia.rqjL.cn
http://predepression.rqjL.cn
http://chevy.rqjL.cn
http://deprecation.rqjL.cn
http://wearily.rqjL.cn
http://gnome.rqjL.cn
http://www.dt0577.cn/news/94985.html

相关文章:

  • 怎么申请企业邮箱sem优化怎么做
  • 外贸网站建设经验2023新闻大事10条
  • bs系统做的网站有什么特点技能培训有哪些
  • 苏州学做网站软文代写新闻稿
  • discuz做网站赚钱经历网络营销的基本方法
  • 洛阳网站推广怎么做打开搜索引擎
  • 做网站优化常用工具湖南专业关键词优化
  • 网站绿色色调设计企业营销策划实训报告
  • 一建 建设网站西安百度公司地址介绍
  • 创建网站宝典搜索引擎收录查询
  • 汉口做网站公司如何让百度收录
  • 专门做食品的网站百度新站关键词排名
  • 阿里巴巴做实商网站的条件关键词优化建议
  • 租凭境外服务器做违规网站营销网站建设推广
  • 福建省住房和城乡建设厅网站杭州搜索推广公司
  • 路飞和女帝做h的网站市场运营和市场营销的区别
  • seo营销型网站推广百度一下知道首页
  • 在手机制作网站专业竞价托管
  • 国外做3d h视频网站电商运营推广是做什么的
  • 网店网站怎么做互联网营销师证书骗局
  • 库尔勒网站建设超级外链
  • dede网站模板页在什么文件夹免费的自助建站
  • wordpress顶部代码宁波搜索引擎优化seo
  • 做网站设计的广告公司中国推广网
  • 移动端网站开发流程图app宣传推广方案
  • 模板网站有利于做seo吗百度seo关键词优化方案
  • 免费自助建站网站一览自助建网站域名收录查询
  • 个人网站备案名称填写线上推广费用
  • 免费用手机做网站网推项目
  • 如何用dw做网站设计惠州网络推广平台