文档章节

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

writeademo
 writeademo
发布于 10/12 17:35
字数 344
阅读 17
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

集群版服务启动过程

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启动交互过程

© 著作权归作者所有

writeademo
粉丝 25
博文 704
码字总数 268781
作品 0
东城
私信 提问
分析Zookeeper的一致性原理

zookeeper(简称zk),顾名思义,为动物园管理员的意思,动物对应服务节点,zk是这些节点的管理者。在分布式场景中,zk的应用非常广泛,如:数据发布/订阅、命名服务、配置中心、分布式锁、集...

憬薇
2018/04/13
0
0
二:ZooKeeper术语概念

一:Zookeeper的设计目标 -->Zookeeper致力于提供一个高性能,高可用,且具有严格的顺序访问控制能力(主要是写操作的严格顺行性)的分布式协调服务。 -->高性能使得Zookeeper能够应用于那些...

无信不立
2016/02/23
0
0
Zookeeper详解(二):Zookeeper安装和运行

安装环境: CentOS 7 内存1GB JDK版本:1.8.0_112 为JDK配置如下环境变量: 编辑/etc/profile.d/jdk.sh #!/bin/bash JAVAHOME=/usr/local/jdk1.8.0112export PATH=$JAVAHOME/bin:$JAVAHOME/......

linuxjavachen
2017/11/19
0
0
zookeeper 安装配置

ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。 一. 单机安装、配置: 下载zookeeper二进制安装包 下载地址:http://apache.dataguru.cn/zooke...

驛路梨花醉美
2016/08/11
15
0
zookeeper源码分析之集群模式服务端(上)

最近较忙,在做服务网格的一些东西,很久没有更新文章了,其实一直惦记着这个事,这次接着之前的话题,把zookeeper的东西补完。 整体来说ZK集群模式运行时分为两个阶段,一个是选举,一个是处...

凌风郎少
2018/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ArrayList 源码分析

一、概述 本文基于 JDK8 ArrayList 底层通过动态数组的数据结构实现 内存需要连续的空间保证 添加操作涉及到数组的动态扩容 添加,删除都涉及到位置移动操作 随机查找效率快(下标查找) Ar...

hncboy
今天
4
0
采购单品汇总_华南.xlsx

import pandas as pdimport matplotlib.pyplot as pltimport matplotlib as mp1mp1.rcParams["font.family"] = "STFangsong"# 加载《销售》表数据df1 = pd.read_excel(r"C:\Us......

龙玉滕
今天
5
0
OSChina 周五乱弹 —— 一次四千 要4次还能多给一千

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享金志文的单曲《远走高飞》: 版权又回来了现在听歌得好几个软件 《远走高飞》- 金志文 手机党少年们...

小小编辑
今天
10
0
Spring Cloud Alibaba 实战(十) - Spring Cloud GateWay

> 本文主要内容是:为什么要使用网关,整合Gateway,Gateway核心学习:Route,Predicate,Filter,最后使用Gateway聚合微服务请求 先总结至此的架构 1 网关的价值 不使用网关行嘛? 各个请求直接打在...

JavaEdge
今天
4
0
【CKB.DEV 茶话会】第二期:聊聊 CKB 钱包和 Nervos DAO 全流程

CKB.DEV 茶话会第二期:聊聊 CKB 钱包和 Nervos DAO 全流程 为了鼓励更多优秀的开发者和研究人员参与到 CKB 的开发和生态建设中去,我们希望组织一系列 CKB Developer Seminar(CKB.DEV 茶话...

NervosCommunity
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部