1、简介
zookeeper 是管理分布式中间件共享数据、配置信息的分布式协调服务框架。
2、zookeeper 下载安装
下载安装参考之前搭建 Kafka 集群的博客:kafka丢弃zookeeper,使用kraft架构-CSDN博客
3、zookeeper 几种状态
1)、LOOKING:参加竞选状态;
2)、FOLLOWING:跟随 Leader 状态,同步 Leader 数据,参与选举投票;
3)、OBSERVING:观察 Leader 状态,同步 Leader 数据,不参与选举投票;
4)、LEADING:领导者状态,用于写数据和数据同步。
相关节点状态的配置:(修改配置文件 zoo.cfg)
peerType=observer # 指定zookeeper节点为observe状态,和下面server.x对应,此例只在myid为3的节点上才需要添加此配置
server.1=192.168.30.88:2888:3888
server.2=192.168.30.89:2888:3888
server.3=192.168.30.90:2888:3888:observer
4、zookeeper 节点类型
1)、持久节点:创建后一直存在,除非手动删除。
2)、临时节点:与客户端会话绑定,会话结束临时节点自动删除,临时节点不允许有子节点。
3)、顺序节点:节点带有序号,序号递增;临时节点、持久节点均可以是有序节点,并且都允许有子节点。
4)、容器节点:一个包含多个子节点的节点,子节点全部删除之后,容器节点会在未来某个时间删除。(删除时间不固定)。
5)、带有过期时间的节点:持久节点可以添加生存时间,以毫秒为单位。到时间不是自动删除,而是在未来某个时间点删除。
带过期的节点需要开启配置
extendedTypesEnable=true
5、zookeeper 客户端命令行操作
# 1、启停zookeeper
./zkServer.sh start/stop
# 2、连接客户端
./zkCli.sh -server ip:port
# 3、查看 zookeeper 所有命令
help
# 4、创建各种节点
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
# 5、获取节点值
get [-s] [-w] path # -s:获取节点状态;-w:监听path值是否改变
# 6、查看节点列表
ls [-w] path [-R] # -w:只监听子节点是否变更,孙节点不监听
# 7、删除节点
delete [-v version] path # 指定版本号删除(get -s path 查看 dataVersion)
# 8、递归删除节点
deleteall path [-b batch size]
# 9、更新节点
set [-s] [-v version] path data # -v:加版本号是乐观锁实现
# 10、移除监听
removewatches path [-c|-d|-a] [-l] # -c:移除子节点监听;-d:移除对节点数据监听;-a:移除所有监听;-l:没有与服务器连接,移除本地watch
6、zookeeper 命令使用java代码实现
6.1、引入依赖
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>5.5.0</version>
</dependency>
6.2、查看子节点列表示例(其他示例同理)
public static void main(String[] args) throws Exception {
// 隔1s,重试3次
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.30.88:2181",retryPolicy);
client.start();
List<String> paths = client.getChildren().forPath("/");
for (String str : paths){
System.out.println(str);
}
client.close();
}
7、zookeeper 客户端
zookeeper 使用 prettyZoo 软件实现 zookeeper 可视化管理,安装包,关注微信公众号回复 “zookeeper” 获取。管理界面如下:
8、总结
本文介绍zookeeper 基本概念和基础命令使用,并且通过java代码实现客户端访问。以及zookeeper 客户端软件介绍,帮助大家快速入门zookeeper。
本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)