Zookeeper学习
Zookeeper学习
linux安装单机zookeeper
#解压压缩包
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
#到conf目录下将zoo_sample.cfg这个文件复制为zoo.cfg (必须是这个文件名)
cp zoo_sample.cfg zoo.cfg
#修改以下配置
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/log
#配置环境变量
export ZOOKEEPER_INSTALL=/server/apache-zookeeper-3.6.3-bin
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
#启动zookeeper服务端
cd /server/apache-zookeeper-3.6.3-bin/bin/
./zkServer.sh start
#重启zookeeper
./zkServer.sh restart
#停止zookeeper
./zkServer.sh stop
#启动zookeeper客户端
./zkCli.sh -server 192.168.2.27:2181
#查看服务器是否开启防火墙==》Active: active (running)代表开启
sudo systemctl status firewalld
#关闭防火墙
sudo systemctl status firewalld
#开启防火墙
sudo systemctl start firewalld
zookeeper基本命令使用
#查看当前拥有的节点
ls /
SpringCloud整合Zookeeper
依赖添加
<dependencies>
<!--图形化健康监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--spring boot整合zookeeper客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--排除自带的zookeeper3.6.0-->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zookeeper3.6.3版本,因为上面整合自带的版本可能不一致,需要添加和服务器版本一致的jar-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.3</version>
</dependency>
</dependencies>
配置文件添加
server:
port: 8004
#服务别名----注册zookeeper到注册中心名称
spring:
application:
name: zk-service-payment
cloud:
zookeeper:
connect-string: 192.168.2.27:2181 #contos上zookeeper服务的地址和端口号
启动类添加
@SpringBootApplication
@EnableDiscoveryClient //开启注册服务
public class ZkPayment8004 {
public static void main(String[] args) {
SpringApplication.run(ZkPayment8004.class,args);
}
}
Zookeeper查看注册信息
#查询当前注册的节点
[zk: 192.168.2.27:2181(CONNECTED) 5] ls /
[services, zookeeper]
#查询注册的具体服务
[zk: 192.168.2.27:2181(CONNECTED) 7] ls /services
[zk-service-payment]
#得到指定服务的流水号
[zk: 192.168.2.27:2181(CONNECTED) 9] ls /services/zk-service-payment
[80ba867e-9168-4212-9e5d-f51dd50131fa]
#根据服务的流水号查询服务的具体json信息
[zk: 192.168.2.27:2181(CONNECTED) 12] get /services/zk-service-payment/80ba867e-9168-4212-9e5d-f51dd50131fa
{
"name":"zk-service-payment",
"id":"80ba867e-9168-4212-9e5d-f51dd50131fa",
"address":"DESKTOP-GUJ27K5",
"port":8004,
"sslPort":null,
"payload":{
"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
"id":"zk-service-payment",
"name":"zk-service-payment",
"metadata":{
"instance_status":"UP"
}
},
"registrationTimeUTC":1628085607361,
"serviceType":"DYNAMIC",
"uriSpec":{
"parts":[
{
"value":"scheme",
"variable":true
},
{
"value":"://",
"variable":false
},
{
"value":"address",
"variable":true
},
{
"value":":",
"variable":false
},
{
"value":"port",
"variable":true
}
]
}
}
客户端调用
和Eureka一致,参考Eureka学习文档,
注意点:
zookeeper注册的服务都是临时节点,只要服务在zookeeper的心跳确认期间未响应,就会被移除,服务重新启动则重新注册
学习对应代码demo
zk-order-80 ==》服务调用者
zk-payment-8004==》服务提供者

浙公网安备 33010602011771号