Zookeeper 学习笔记归纳01
1.zookeeper是什么?
- zookeeper是一个分布式协调服务工具,可以提供配置信息、名称、分布式同步、组服务等
- 官网https://zookeeper.apache.org/
- apache基金下的开源软件

- 当前版本搜索https://mvnrepository.com/search?q=zookeeper

这里可以看到3.4.6使用次数较多,不过比较旧。只是研究学习,使用这个版本是足够的,如果是企业使用,采用较新的稳定版本更合适。后续会讲一下企业选择第三方库和第三方库版本的一些注意事项。

- 官网中现有版本,
3.4.6(本文采用的版本)


3.6.1

2. zookeeper解决了什么问题?
- ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
- 官网介绍,其实已经把功能和作用解释的比较清楚了,归纳起来就是可以往zookeeper写数据、读取数据、使用它做数据变化监控。稍后画图做解释。
- 主节点选举

- 主从节点感知(状态通信)

- 配置文件同步(zookeeper可以进行少量数据存储,并且具备较高的信息同步和传输性能)

- 集群节点上下线动态感知

- 负载均衡,zookeeper如上图,也可以进行负载均衡。外部请求过来后,根据一定规则,让请求分发到集群中不同处理节点上。这样可以保证整体服务的可用。结合zookeeper的节点上下线动态感知,当集群遇到突发性流量时如天猫双十一,这时候集群节点会临时性扩充来应对爆发性请求流量。
- 分布式锁

- 名称服务,例如请求过来后,根据负载均衡,返回相同域名对应的不同ip地址。

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

- 查看节点状态信息, stat /doit 。 注意stat后面跟的是一个节点的绝对路径,切记切记,不要给相对路径,就给绝对路径。这一点和hdfs中的数据访问一样,都给绝对路径。

- 当前打开客户端的操作指令历史记录, history

- 删除节点,delete /xixi 注意这里删除不能递归删除,也就类似linux中的,删除文件,而不能删除文件夹。递归删除需要使用后面的rmr指令

7.递归删除 rmr /xixi 这个指令类似linux的rm -r指令,递归删除文件夹,

- 更新节点的数据,set /doit/zoo zooooo

- 退出命令行quit,这里可以对比mysql的,也是quit。不过mysql还支持exit退出

3.2 java api操作
- 使用idea 2020版本,创建maven项目
- 去maven repository 拷贝对应版本的pom配置信息

- 粘贴配置信息,我的如下
<!-- 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>
- 刷新maven,等待maven把jar包下载下来。下载速度慢的,请配置一下maven的本地仓库。具体配置可以参考我的另外一篇文章maven对比和使用简介
- 创建节点数据和判断节点是否存在
private static void zkCreate() {
try {
// 创建连接
ZooKeeper zooKeeper = new ZooKeeper("linux100:2181", 2000, null);
// zookeeper的操作,查看,创建,更新,删除,监控数据变化
// 这里是创建一个节点,
// 第一个参数是节点路径
// 第二个是节点值
// 第三个是节点访问权限控制,这里选择的是对所有人开放所以单词中有unsafe字样
// 第四个是节点类型(zookeeper的节点有永久和临时,persistant就是永久,ephemeral就是短暂的,临时的节点)
Stat exists = zooKeeper.exists("/keyboard", false);
// 不存在才创建

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

被折叠的 条评论
为什么被折叠?



