SpringBoot3集成Zookeeper
标签:Zookeeper3.8 ,Curator5.5;
一、简介
ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步、提供组服务。分布式应用程序以某种形式使用所有这些类型的服务。
二、环境搭建
1、修改配置文件
# 1、拷贝一份样本配置文件
cp zookeeper-3.8.3/conf/zoo_sample.cfg zookeeper-3.8.3/conf/zoo.cfg
# 2、修改数据文件地址,注意这里用本地路径
dataDir=/local-path/zookeeper-3.8.3/data
# 3、添加一个配置,处理启动日志的提示:ZooKeeper audit is disabled.
audit.enable=true
2、服务启动
# 1、启动服务端
zookeeper-3.8.3/bin/zkServer.sh start
# 2、停止服务端
zookeeper-3.8.3/bin/zkServer.sh stop
# 3、启动客户端
zookeeper-3.8.3/bin/zkCli.sh
3、客户端测几个增删查的命令
[zk: localhost:2181(CONNECTED) 0] create /cicada smile1
Created /cicada
[zk: localhost:2181(CONNECTED) 1] get /cicada
smile1
[zk: localhost:2181(CONNECTED) 2] ls /
[cicada, zookeeper]
[zk: localhost:2181(CONNECTED) 3] delete /cicada
三、工程搭建
1、工程结构

2、依赖管理
Curator是一组Java库,它让ZooKeeper的使用变得更加容易,这里的依赖实际是查询匹配版本的时候走了个捷径,也可以参考integration-redis包,熟悉下Spring的封装策略。
<!-- Zookeeper组件 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<!-- 包含Curator组件 -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-zookeeper</artifactId>
<version>${spring-integration.version}</version>
</dependency>
3、配置文件
配置脚本
zookeeper:
#服务器地址
connectString: 127.0.0.1:2181
#会话超时时间
sessionTimeoutMs: 3000
#连接超时时间
connectionTimeoutMs: 60000
#最大重试次数
maxRetries: 3
#初始休眠时间
baseSleepTimeMs: 1000
配置类
@Configuration
public class ZookeeperConfig {
@Value("${zookeeper.connectString}")
private String connectString;
@Value("${zookeeper.baseSleepTimeMs}")
private int baseSleepTimeMs;
@Value("${zookeeper.maxRetries}")
private int maxRetries ;
@Value("${zookeeper.connectionTimeoutMs}")
int connectionTimeoutMs ;
@Value("${zookeeper.sessionTimeoutMs}")
int sessionTimeoutMs ;
private static CuratorFramework client = null ;
/**
* 初始化
*/
@PostConstruct
public void init (){
// 重试策略
RetryPolicy policy = new ExponentialBackoffRetry(baseSleepTimeMs, maxRetries);
// 创建Curator
client = CuratorFrameworkFactory.builder()
.connectString(connectString)
.connectionTimeoutMs(connectionTimeoutMs)
.sessionTimeoutMs(sessionTimeoutMs)
.retryPolicy(policy).build();
//开启连接
client.start();
}
@Bean
public CuratorFramework getClient (){
return client ;
}
}
四、ZooKeeper用法
测试几个API方法,节点创建和添加数据,以及判断和查询数据,还有就是基于ZooKeeper提供的读写锁能力。
public class ConfigTest {
@Autowired
private CuratorFramework client ;
@Test
public void testCreate () throws Exception {
// 创建一个持久化节点,断开连接时不会自动删除
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/path1");
}
@Test
public void testExists () throws Exception {
// 判断节点是否存在,path2不存在所以stat2是null
Stat stat1 = client.checkExists().forPath("/path1");
System.out.println(stat1);
Stat stat2 = client.checkExists().forPath("/path2");
System.out.println(stat2);
}
@Test
public void testSetData () throws Exception {
// 设置节点数据
client.setData().forPath("/path1", "data1".getBytes(StandardCharsets.UTF_8));
}
@Test
public void testCreateAndSet () throws Exception {
// 创建一个持久化节点并设置节点数据
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT)
.forPath("/path3","data3".getBytes(StandardCharsets.UTF_8));
}
@Test
public void testGetData () throws Exception {
// 查询节点数据
byte[] data = client.getData().forPath("/path3");
System.out.println(new String(data,StandardCharsets.UTF_8));
}
@Test
public void testDelete () throws Exception {
// 删除节点
client.delete().guaranteed().deletingChildrenIfNeeded().forPath("/path3");
}
@Test
public void testReadLock () throws Exception {
// 读写锁-读
InterProcessReadWriteLock lock = new InterProcessReadWriteLock(client,"/lock-read");
lock.readLock().acquire();
System.out.println("获取-ReadLock");
lock.readLock().release();
}
@Test
public void testWriteLock () throws Exception {
// 读写锁-写
InterProcessReadWriteLock lock = new InterProcessReadWriteLock(client,"/lock-write");
lock.writeLock().acquire();
System.out.println("获取-WriteLock");
lock.writeLock().release();
}
}
五、参考源码
文档仓库:
https://gitee.com/cicadasmile/butte-java-note
源码仓库:
https://gitee.com/cicadasmile/butte-spring-parent
SpringBoot3集成Zookeeper的更多相关文章
- spring boot 集成 zookeeper 搭建微服务架构
PRC原理 RPC 远程过程调用(Remote Procedure Call) 一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,R ...
- springcloud集成zookeeper,并使用configserver作为服务的配置中心
1.springcloud集成zookeeper: 做法: 出现问题: 版本不一致导致出现keepError: 解决:服务器的zookeeper要与客户端的zookeeper一致,才可以. 2.使用c ...
- Spring Boot 知识笔记(集成zookeeper)
一.本机搭建zookeeper伪集群 1.下载安装包,复制三份 2.每个安装包目录下面新建一个data文件夹,用于存放数据目录 3.安装包的conf目录下,修改zoo.cfg配置文件 # The nu ...
- HBase集成Zookeeper集群部署
大数据集群为了保证故障转移,一般通过zookeeper来整体协调管理,当节点数大于等于6个时推荐使用,接下来描述一下Hbase集群部署在zookeeper上的过程: 安装Hbase之前首先系统应该做通 ...
- springcloud的turbine集成zookeeper
1.turbine监控界面显示一直是loading的状态,如何解决 http://blog.didispace.com/spring-cloud-tips-4/ 2.通过追踪turbine的依赖可以看 ...
- dubbo集成zookeeper rpc远程调用
注:下面使用dubbo依赖的是zookeeper注册中心,这里没有详细的介绍.在配置之前,请自行准备好zookeeper环境. 后续如果写zookeeper的配置会补放链接 添加Gradle依赖 co ...
- Dubbo集成Spring与Zookeeper实例
>>Dubbo最佳实践 使用Dubbo结合Zookeeper和Spring,是使用比较广泛的一种组合,下面参考官方文档,做个简单的示例,一步步搭建一个使用dubbo结合Zookeeper和 ...
- ZooKeeper配置管理文件
最近在工作中,为了完善公司集群服务的架构,提高可用性,降低运维成本,因此开始学习ZooKeeper. 至于什么是ZooKeeper?它能做什么?如何安装ZooKeeper?我就不一一介绍了,类似 ...
- Solr+Tomcat+zookeeper部署实战
一 .安装solr 环境说明:centos 7.3,solr 6.6,zookeeper3.4,Tomcat8.5,jdk1.8 zookeeper的部署请参考:http://www.cnblogs. ...
- Zookeeper系列1 快速入门
Zookeeper的简介这里我就不说了,在接下来的几篇文章会涉及zookeeper环境搭建,watcher以及相关配置说明, 三种操作zookeeper的方式(原生API方式,zkclient,Cur ...
随机推荐
- 万界星空科技五金家具企业MES案例介绍
五金家具行业MES解决方案 MES系统如何与家具企业生产相匹配?相较于其它大多数工业软件,MES系统无疑是受企业欢迎的软件之一.MES系统处于制造生产企业信息化的核心领域,有着承上启下的作用.那MES ...
- zabbix+oracle环境部署
oracle11安装完成后, 实例名: zbx01 oracle创建zbx01用户:col file_name for a60;set linesize 160;select file_name,ta ...
- android 页面切换
案例演示: 首先有MainActivity与LoginActivity两个Activity MainActivity.java public class MainActivity extends Ap ...
- 有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
摘要:不想加班修复数据?强一致的华为云数据库GaussDB(for Cassandra)来了-- 本文分享自华为云社区<HDC.Cloud2021|华为云GaussDB让开发者们不再加班修复数据 ...
- KubeEdge边缘计算在顺丰科技工业物联网中的实践
摘要:顺丰物联网平台负责人胡典钢为大家带来了 " 边缘计算在工业物联网中的应用实践与思考 " ,阐述了工业物联网的发展背景.整体架构设计以及边缘计算在此过程中承担的重要角色,并梳理 ...
- 使用MRS CDL实现实时数据同步的极致性能
摘要:MRS CDL旨在实现最大的数据复制吞吐量和低复制延迟. 本文分享自华为云社区<使用MRS CDL实现实时数据同步的极致性能>,作者:大数据修行者 . MRS CDL提供从多个RDB ...
- 火山引擎 DataTester 首推 A/B 实验经验库,帮助企业高效优化实验设计能力
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎 DataTester 推出了重要功能--A/B 实验经验库. 基于在字节跳动已完成 150 万 ...
- HTML 首页 欢迎页
HTML 首页 欢迎页,将下面代码复制出来,贴到HTML中,直接运行 <!DOCTYPE html> <html lang="en"> <head&g ...
- cmd 7z 文件压缩
7z压缩测试 为了方便,将7z的安装目录,添加到环境变量中 # 不加环境变量的话,需要带上全路径 C:\Users\vipsoft>"C:\\Program Files\\7-Zip\ ...
- Windows 2012 上网慢如何解决
解决步骤:1.执行netsh int tcp show global 查看默认TCP全局参数等相关设置 Windows 2012 默认ECN 功能是开启的,将其关闭即可 以管理员的身份运行下列 ...