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==》服务提供者

posted @ 2021-08-04 23:51  幸运刘  阅读(25)  评论(0)    收藏  举报