zookeeper1==zookeeper源码阅读,源码启动ZK集群

这篇具有很好参考价值的文章主要介绍了zookeeper1==zookeeper源码阅读,源码启动ZK集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下载源码

Tags · apache/zookeeper · GitHub

https://codeload.github.com/apache/zookeeper/zip/refs/tags/release-3.9.1

JDK8

MAVEN3.8.6

mvn -DskipTests=true package

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

配置ZK1

zkServer.cmd中指出了启动类是 QuorumPeerMain

QuorumPeer翻译成集群成员比较合理,Quorum集群Peer成员

在代码目录下新建data文件夹和log文件夹

并在data目录下创建myid文件,内容为1

在conf目录下新建zoo.cfg,内容为

# zoo1.cfg
# 同步配置
tickTime=2000
initLimit=10
syncLimit=5
# 目录配置,注意需要 2个
dataDir=E:\\zk3.9.1\\data
dataLogDir=E:\\zk3.9.1\\log
# 端口配置
clientPort=2181
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

配置启动ZK2和ZK3

直接上官方网站下载最近的版本的ZIP文件,作为集群的另两个节点启动,当然也可以拷贝刚才的源码额外从源码启动来作为两个节点。我这就直接下载官方打好的包了。

下载地址:Apache ZooKeeper

刚好有和源码对应的3.9.1,下载后指定配置文件和创建data目录和log目录,data目录下创建myid文件,里面的内容分别为2和3。

配置文件分别为

# zoo1.cfg
# 同步配置
tickTime=2000
initLimit=10
syncLimit=5
# 目录配置,注意需要 2个
dataDir=E:\\zk-jiqun\\zk2\\data
dataLogDir=E:\\zk-jiqun\\zk2\\log
# 端口配置
clientPort=2182
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
# zoo1.cfg
# 同步配置
tickTime=2000
initLimit=10
syncLimit=5
# 目录配置,注意需要 2个
dataDir=E:\\zk-jiqun\\zk3\\data
dataLogDir=E:\\zk-jiqun\\zk3\\log
# 端口配置
clientPort=2183
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

启动zk2和zk3

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

从源码启动zk1加入集群

修改org.apache.zookeeper.server.quorum.QuorumPeerMain#initializeAndRun方法

指定配置文件的路径(为什么要在这里改?研究下zkServer.cmd干了什么就知道了)

//指定配置文件
        args=new String[1];
        args[0]="E:\\zk3.9.1\\conf\\zoo.cfg";

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

启动报错

说有个类找不到,java.lang.NoClassDefFoundError: com/codahale/metrics/Reservoir

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

找到该类所在包的引入位置把scope直接注释掉。我这为了方便直接所有scope都给注释掉了

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

 再次启动,成功,zk1成了follwer

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

测试

启动个客户端,直接点击zkCli.cmd即可,默认连接上本机2181的ZK1。敲两个命令测试下

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

 再连接上另一个节点,

zkCli.cmd -server localhost:2182

查看下刚才创建的ZNODE发现这台机上也能查到,说明集群是成功的。

查看谁是leader,看日志也能看出来。或者BASH环境执行zkServer.sh status

三个节点均使用源码启动

zookeeper1==zookeeper源码阅读,源码启动ZK集群,zookeeper,分布式,zookeeper,云原生

下一篇研究下zk1启动后发生了什么。大致上就是连接上配置文件中指定的集群内的其他SERVER,然后创建连接,然后根据ZAB协议找到LEADER。文章来源地址https://www.toymoban.com/news/detail-755706.html

到了这里,关于zookeeper1==zookeeper源码阅读,源码启动ZK集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper源码分析——ZK服务端加载数据源码解析

    (1)zk 中的数据模型,是一棵树,DataTree,每个节点,叫做DataNode (2)zk 集群中的DataTree 时刻保持状态同步 (3)Zookeeper 集群中每个zk 节点中,数据在内存和磁盘中都有一份完整的数据。 ⚫ 内存数据:DataTree ⚫ 磁盘数据:快照文件 + 编辑日志 ZK服务端初始化源码解析 启动

    2023年04月24日
    浏览(42)
  • Zookeeper 和 Redis 哪种更好? 为什么使用分布式锁? 1. 利用 Redis 提供的 第二种,基于 ZK 实现分布式锁的落地方案 对于 redis 的分布式锁而言,它有以下缺点:

    关于这个问题,我们 可以从 3 个方面来说: 为什么使用分布式锁? 使用分布式锁的目的,是为了保证同一时间只有一个 JVM 进程可以对共享资源进行操作。 根据锁的用途可以细分为以下两类: 允许多个客户端操作共享资源,我们称为共享锁 这种锁的一般是对共享资源具有

    2024年01月16日
    浏览(39)
  • 分布式应用:Zookeeper 集群与kafka 集群部署

    目录 一、理论 1.Zookeeper   2.部署 Zookeeper 集群 3.消息队列  4.Kafka 5.部署 kafka 集群 6.Filebeat+Kafka+ELK 二、实验 1.Zookeeper 集群部署 2.kafka集群部署 3.Filebeat+Kafka+ELK 三、问题          1.解压文件异常 2.kafka集群建立失败 3.启动 filebeat报错 4.VIM报错 5. kibana无法匹配 四、总结

    2024年02月14日
    浏览(40)
  • ZooKeeper+HBase分布式集群环境搭建

    安装版本:hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper 集群搭建与配置 1. 下载zookeeper安装包 2. 解压移动zookeeper 3. 修改配置文件(创建文件夹) 4. 进入conf/ 5. 修改zoo.cfg文件 6. 进入/usr/local/zookeeper-3.4.12/zkdatas/这个路径下创建一个文件,文件名为myid ,文件内容为1 7. 拷贝到

    2024年02月08日
    浏览(34)
  • Zookeeper 伪分布式集群搭建详细步骤

    在同一台服务器上,部署一个 3 个 ZooKeeper 节点组成的集群,这样的集群叫伪分布式集 群,而如果集群中的 3 个节点分别部署在 3 个服务器上,那么这种集群就叫真正的分布式 集群。 这里,记录一下搭建一个 3 节点的伪分布式集群的过程,真正的分布式集群的搭建过程和 伪

    2024年02月08日
    浏览(34)
  • 第四节 zookeeper集群与分布式锁

    目录 1. Zookeeper集群操作 1.1 客户端操作zk集群 1.2 模拟集群异常操作 1.3 curate客户端连接zookeeper集群 2. Zookeeper实战案例 2.1 创建项目引入依赖 2.2 获取zk客户端对象 2.3 常用API 2.4 客户端向服务端写入数据流程 2.5 服务器动态上下线、客户端动态监听 2.6 测试 3.Zookeeper分布式锁 3.

    2024年02月20日
    浏览(40)
  • 分布式集群框架——有关zookeeper的面试考点

          当涉及到大规模分布式系统的协调和管理时,Zookeeper是一个非常重要的工具。 1. 分布式协调服务:Zookeeper是一个分布式协调服务,它提供了一个高可用和高性能的环境,用于协调和同步分布式系统中的各个节点。它通过提供共享的命名空间和一致性的数据模型来简化开

    2024年02月11日
    浏览(34)
  • CentOS7安装Zookeeper分布式集群

    前言 ZooKeeper 是一个开源的分布式协调服务框架,主要用于分布式系统中的数据同步、配置管理、集群控制和命名服务等方面的处理。本文在3个系统为CentOS7的Linux节点上配置了Zookeeper分布式集群,安装配置的过程均在普通用户 sxZhang 的账户上完成,安装路径为 ~/bigdata ,3个

    2024年01月17日
    浏览(45)
  • zookeeper+kafka分布式消息队列集群的部署

    目录 一、zookeeper 1.Zookeeper 定义 2.Zookeeper 工作机制 3.Zookeeper 特点 4.Zookeeper 数据结构 5.Zookeeper 应用场景 (1)统一命名服务 (2)统一配置管理 (3)统一集群管理 (4)服务器动态上下线 6.Zookeeper 选举机制 (1)第一次启动选举机制 (2)非第一次启动选举机制 7.部署zookeepe

    2024年02月14日
    浏览(36)
  • 第五节 zookeeper集群与分布式锁_2

    1)要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁。 线程锁 :主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。 线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,

    2024年02月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包