资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

zk集群版服务启动实现Leader和Follower之间数据交互

本篇内容主要讲解“zk集群版服务启动实现Leader和Follower之间数据交互”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“zk集群版服务启动实现Leader和Follower之间数据交互”吧!

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、网页空间、营销软件、网站建设、江干网站维护、网站推广。

集群版服务启动过程

zk集群版服务启动实现Leader和Follower之间数据交互

LeaderElection算法

完成自己投票和投票算法的获取

集群特有,zookeeper首先会根据自身服务器id(sid)

最新的zxid(lastloggedZxid)和当前的服务器epoch(currentEpoch)

来生成一个初始化投票

初始化过程中,每个服务都会给自己投票,然后,根据zoo.cfg的配置

创建相应Leader选举算法实现

zk配置中提供默认三种算法(Leaderelection,AuthFastLeaderElection,FastLeaderElection).通过zoo.cfg的electionalg属性指定,默认支持FastLeaderElection

在初始化阶段,会创建选举需要的网络i/o层 QuorumCnxManager,等待其他服务的连接

@Override
public synchronized void start() {
    if (!getView().containsKey(myid)) {
        throw new RuntimeException("My id " + myid + " not in the peer list");
    }
    //加载数据库
    loadDataBase();
    //启动服务连接工厂
    startServerCnxnFactory();
    try {
        adminServer.start();
    } catch (AdminServerException e) {
        LOG.warn("Problem starting AdminServer", e);
        System.out.println(e);
    }
    //开始选举
    startLeaderElection();
    startJvmPauseMonitor();
    super.start();
}

public synchronized void startLeaderElection() {
    try {
        if (getPeerState() == ServerState.LOOKING) {
            //认为当前是leader
            currentVote = new Vote(myid, getLastLoggedZxid(), getCurrentEpoch());
        }
    } catch (IOException e) {
        RuntimeException re = new RuntimeException(e.getMessage());
        re.setStackTrace(e.getStackTrace());
        throw re;
    }

    this.electionAlg = createElectionAlgorithm(electionType);
}

Leader和Follower启动交互过程

zk集群版服务启动实现Leader和Follower之间数据交互

到此,相信大家对“zk集群版服务启动实现Leader和Follower之间数据交互”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网站栏目:zk集群版服务启动实现Leader和Follower之间数据交互
分享URL:http://www.cdkjz.cn/article/jopsdh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220