Zookeeper 学习笔记归纳

Zookeeper 是一个分布式协调服务,用于配置管理、命名、分布式同步和组服务。它解决了配置信息同步、主从节点选举、集群动态感知等问题。文章介绍了Zookeeper的使用,包括命令行客户端和Java API操作,以及内部机制如选举、数据存储和内部通信。此外,还强调了Zookeeper的注意事项,如数据存储限制和集群高可用性的重要性。

Zookeeper 学习笔记归纳01

1.zookeeper是什么?

  1. zookeeper是一个分布式协调服务工具,可以提供配置信息、名称、分布式同步、组服务等
  2. 官网https://zookeeper.apache.org/
  3. apache基金下的开源软件在这里插入图片描述
  4. 当前版本搜索https://mvnrepository.com/search?q=zookeeper
    在这里插入图片描述
    这里可以看到3.4.6使用次数较多,不过比较旧。只是研究学习,使用这个版本是足够的,如果是企业使用,采用较新的稳定版本更合适。后续会讲一下企业选择第三方库和第三方库版本的一些注意事项。
    在这里插入图片描述
  5. 官网中现有版本,
    3.4.6(本文采用的版本)
    在这里插入图片描述
    在这里插入图片描述
    3.6.1
    在这里插入图片描述

2. zookeeper解决了什么问题?

  1. ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
  2. 官网介绍,其实已经把功能和作用解释的比较清楚了,归纳起来就是可以往zookeeper写数据、读取数据、使用它做数据变化监控。稍后画图做解释。
  • 主节点选举
    在这里插入图片描述
  • 主从节点感知(状态通信)
    在这里插入图片描述
  • 配置文件同步(zookeeper可以进行少量数据存储,并且具备较高的信息同步和传输性能)
    在这里插入图片描述
  • 集群节点上下线动态感知
    在这里插入图片描述
  • 负载均衡,zookeeper如上图,也可以进行负载均衡。外部请求过来后,根据一定规则,让请求分发到集群中不同处理节点上。这样可以保证整体服务的可用。结合zookeeper的节点上下线动态感知,当集群遇到突发性流量时如天猫双十一,这时候集群节点会临时性扩充来应对爆发性请求流量。
  • 分布式锁
    在这里插入图片描述
  • 名称服务,例如请求过来后,根据负载均衡,返回相同域名对应的不同ip地址。
    在这里插入图片描述

3.zookeeper怎么使用

  1. zookeeper安装,zookeeper安装
    2.通过命令行客户端或者java api进行调用访问。这一点和java的文件IO流(文件可以使用操作系统的图形化界面和java api操作)、mysql(可以通过命令行客户端、图形化客户端如navicat、java api进行操作)、hdfs(命令行客户端、java api)。
  2. zookeeper的核心功能就是数据读写,同时具备很高的数据传输性能。zookeeper的数据是以node节点方式进行存储,跟linux的文件目录树一样,都是划分节点,。
  3. 状态和数据同步,就是对这个节点以及节点中数据进行同步。
  4. 数据读写,就是对这些节点以及节点中数据进行读写。

3.1命令行客户端

  1. 在zookeeper安装目录下的bin目录下,执行 以下shell脚本命令。注意2种方式,不管是对哪个zookeeper节点做操作,最后数据都会被同步到整个zookeeper的所有节点上去。
# 本地连接,就是在充当了zookeeper的节点服务器上,直接运行这个客户端程序
./zkCli.sh  
# 连接到指定的服务节点
bin/zkCli.sh  -server linux101:2181  

在这里插入图片描述
2. 创建一个节点,并设置数据为字符串,age18。注意路径必须是绝对路径,也就是以/目录为起始节点。
create /doit/zoo age18
在这里插入图片描述
这里创建节点,需要逐级创建,否则就会报中间节点不存在的错误,如下图
在这里插入图片描述
3. 查看文件节点 ,ls / 。ls之后跟一个节点的绝对路径,这里演示传的参数是根节点
在这里插入图片描述
ls2 /doit 这个指令返回信息会更加详细。信息详细程度类似stat指令
在这里插入图片描述

  1. 查看节点状态信息, stat /doit 。 注意stat后面跟的是一个节点的绝对路径,切记切记,不要给相对路径,就给绝对路径。这一点和hdfs中的数据访问一样,都给绝对路径。
    在这里插入图片描述
  2. 当前打开客户端的操作指令历史记录, history
    在这里插入图片描述
  3. 删除节点,delete /xixi 注意这里删除不能递归删除,也就类似linux中的,删除文件,而不能删除文件夹。递归删除需要使用后面的rmr指令
    在这里插入图片描述
    7.递归删除 rmr /xixi 这个指令类似linux的rm -r指令,递归删除文件夹,
    在这里插入图片描述
  4. 更新节点的数据,set /doit/zoo zooooo
    在这里插入图片描述
  5. 退出命令行quit,这里可以对比mysql的,也是quit。不过mysql还支持exit退出
    在这里插入图片描述

3.2 java api操作

  1. 使用idea 2020版本,创建maven项目
  2. 去maven repository 拷贝对应版本的pom配置信息
    在这里插入图片描述
  3. 粘贴配置信息,我的如下
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.6</version>
    <!-- 这一行注释掉<type>pom</type>-->
</dependency>
  1. 刷新maven,等待maven把jar包下载下来。下载速度慢的,请配置一下maven的本地仓库。具体配置可以参考我的另外一篇文章maven对比和使用简介
  2. 创建节点数据和判断节点是否存在
private static void zkCreate() {
   
   
        try {
   
   
            // 创建连接
            ZooKeeper zooKeeper = new ZooKeeper("linux100:2181", 2000, null);

            // zookeeper的操作,查看,创建,更新,删除,监控数据变化
            // 这里是创建一个节点,
            // 第一个参数是节点路径
            // 第二个是节点值
            // 第三个是节点访问权限控制,这里选择的是对所有人开放所以单词中有unsafe字样
            // 第四个是节点类型(zookeeper的节点有永久和临时,persistant就是永久,ephemeral就是短暂的,临时的节点)
            Stat exists = zooKeeper.exists("/keyboard", false);
            // 不存在才创建
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值