Idea+maven+spring-cloud项目搭建系列--8整合Zookeeper
创始人
2024-02-24 02:17:08

本文为 Idea+maven+spring-cloud项目搭建系列,maven项目的创建可以参考:
https://blog.csdn.net/l123lgx/article/details/121467823
本文使用了nacos 作为微服务的注册与发现,nacos 阿里云服务器的安装可以参考:https://blog.csdn.net/l123lgx/article/details/121421431
nacos 服务端的配置和使用可以参考:
https://blog.csdn.net/l123lgx/article/details/121491529
本文使用默认已经在服务端安装了zookeeper服务,阿里云轻量服务器–Docker–Zookeeper参考:
https://blog.csdn.net/l123lgx/article/details/122047659

1 pom 文件引入依赖jar包:

 org.apache.zookeeperzookeeper3.7.0org.slf4jslf4j-log4j12log4jlog4jorg.apache.curatorcurator-framework5.3.0org.apache.zookeeperzookeeperorg.apache.curatorcurator-recipes5.3.0org.apache.curatorcurator-framework

2 zookeeper 配置文件:
WrapperZK:

@Data
@Component
@ConfigurationProperties(prefix = "curator")
public class WrapperZK {private int retryCount;private int elapsedTimeMs;private String connectString;private int sessionTimeoutMs;private int connectionTimeoutMs;
}

CuratorConfig:

@Configuration
public class CuratorConfig {@AutowiredWrapperZK wrapperZk;/*** 这里的start就是创建完对象放到容器后,需要调用他的start方法** @return*/@Bean(initMethod = "start", destroyMethod = "close")public CuratorFramework curatorFramework() {return CuratorFrameworkFactory.newClient(wrapperZk.getConnectString(),wrapperZk.getSessionTimeoutMs(),wrapperZk.getConnectionTimeoutMs(),new RetryNTimes(wrapperZk.getRetryCount(), wrapperZk.getElapsedTimeMs()));}
}

3 测试类:

@SpringBootTest
public class ZookeeperTest {@AutowiredCuratorFramework curatorFramework;/*** 创建节点** @throws Exception*/@Testvoid createNode() throws Exception {// 添加持久节点String path = curatorFramework.create().forPath("/curator-node");System.out.println(String.format("curator create node :%s successfully.", path));// 添加临时序号节点,并赋值数据String path1 = curatorFramework.create().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath("/curator-node", "some-data".getBytes());System.out.println(String.format("curator create node :%s successfully.", path1));// System.in.read()目的是阻塞客户端关闭,我们可以在这期间查看zk的临时序号节点// 当程序结束时候也就是客户端关闭的时候,临时序号节点会消失System.in.read();}/*** 获取节点** @throws Exception*/@Testpublic void testGetData() throws Exception {// 在上面的方法执行后,创建了curator-node节点,但是我们并没有显示的去赋值// 通过这个方法去获取节点的值会发现,当我们通过Java客户端创建节点不赋值的话默认就是存储的创建节点的ipbyte[] bytes = curatorFramework.getData().forPath("/curator-node");System.out.println("节点数据:");System.out.println(new String(bytes));}/*** 修改节点数据** @throws Exception*/@Testpublic void testSetData() throws Exception {curatorFramework.setData().forPath("/curator-node", "changed!".getBytes());byte[] bytes = curatorFramework.getData().forPath("/curator-node");System.out.println("修改节点数据:");System.out.println(new String(bytes));}/*** 创建节点同时创建⽗节点** @throws Exception*/@Testpublic void testCreateWithParent() throws Exception {String pathWithParent = "/node-parent/sub-node-1";String path = curatorFramework.create().creatingParentsIfNeeded().forPath(pathWithParent);System.out.println(String.format("curator create node :%s successfully.", path));}/*** 删除节点(包含子节点)** @throws Exception*/@Testpublic void testDelete() throws Exception {String pathWithParent = "/curator-node";curatorFramework.delete().guaranteed().deletingChildrenIfNeeded().forPath(pathWithParent);}
}

4 创建节点查询节点信息:
4.1 进入zookeeper 容器 :
docker exec -it 容器id /bin/bash
4.2 进入bin 目录启动客户端:
cd bin/
zkCli.sh
4.3 查看节点:
ls /
可以看到测试类中创建的持久和临时节点:
在这里插入图片描述

在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...