zookeeper简介
zookeeper 是Apache 的Hadoop 中的一个开源子项目,其主要提供了服务的统一命名,分布式下配置的管理,集群管理等功能,
zk是一种文件系统的方式构成的,最顶层是/根目录,下每一个nameserver(node 节点) ,也可以理解我我们平常所说的文件夹类似,其唯一的区别介绍,zk的znode 节点能够进行小量的数据存储。 我们都可以自由的进行增加,删除 。zk的节点一个有四种类型:
持久性节点:就是说,zk与客户端断开连接之后,节点还存在
持久性有序节点:zk与客户端断开连接之后,节点存在,但是zk对节点进行了顺序编号的
临时节点:zk与客户端断开连接之后,节点不存在,删除
临时有序节点:zk与客户断开连接之后,节点不存在,被删除,只是节点是被顺序编号的
zookeeper 安装:
安装包下载地址: https://zookeeper.apache.org/releases.html 环境变量配置好之后。
wind里面,直接使用下载的安装包解压之后的bin/目录下的两个文件,
1.启动服务
2.启动客户端测试
springcloud 整合zk
1.jar
<!--springcloud 依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> </dependency> </dependencies>
启动类
@SpringBootApplication @EnableDiscoveryClient public class ZkApp { public static void main(String[] args) { SpringApplication.run(ZkApp.class); } }
配置文件:
server: port: 8013 spring: application: name: myzkserver cloud: zookeeper: connect-string: localhost:2181
启动启动类:报错 null 空指针 不明白为什么报,接着看后面的异常
这里zk 有异常抛出,说是不能实现创建myzkserver 这个节点的意思 但是确实没有看出问题,在看zookeeper 服务包的错
看了下,这个错误在网上查找了下,是因为版本的原因。
我原来本地zk是3.4.14 的,springcloud 依赖的是zk 2.0的版本 所以重新依赖zk 版本 3.4.14
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <exclusions> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <scope>test</scope> </dependency>
之后启动,一样报版本的错误 所以在查询发现 springcloud 2.x的版本对应的zk 版本必须是3.5.x以上的 ,所以就改用了zk3.6.2版本
再次启动成功,如图
通过客户端查看新配置的服务