SpringCloud 2020-Zookeeper服务注册与发现(笔记)

上一篇:SpringCloud 2020-Eureka服务注册与发现(笔记)

Zookeeper服务注册与发现

    • 1、准备
    • 2、服务提供者注册进zookeeper
    • 3、服务消费者注册进zookeeper
    • 4、下一篇:SpringCloud 2020-Consul服务注册与发现
    • 视频地址:

1、准备

需要在linux虚拟机上安装zookeeper

  • 关闭防火墙
    SpringCloud 2020-Zookeeper服务注册与发现(笔记)_第1张图片
  • 查看linux的ip地址
    SpringCloud 2020-Zookeeper服务注册与发现(笔记)_第2张图片

2、服务提供者注册进zookeeper

1、 新建cloud-provider-payment8004
2、pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020artifactId>
        <groupId>com.liukai.springcloudgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>cloud-provider-payment8004artifactId>

    <dependencies>

        <dependency>
            <groupId>com.liukai.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>${project.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

    dependencies>

project>

3、yml

server:
  port: 8004

spring:
  application:
    name: cloud-provider-payment
  cloud:
    zookeeper:
      connect-string: 192.168.4.100:2181

4、主启动类PaymentMain8004

package com.liukai.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author liukai
 * @version 1.0.0
 * @ClassName PaymentMain8004.java
 * @Description TODO
 * @createTime 2021年03月20日 21:54:00
 */
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
     
    
    public static void main(String[] args) {
     
            SpringApplication.run(PaymentMain8004.class);
    }
    
}

5、PaymentController

package com.liukai.springcloud.controller;

import cn.hutool.core.lang.UUID;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author liukai
 * @version 1.0.0
 * @ClassName PaymentController.java
 * @Description TODO
 * @createTime 2021年03月20日 21:59:00
 */
@RestController
@Slf4j
public class PaymentController {
     

    @Value("${server.port}")
    private String serverPort;

    @GetMapping(value = "/payment/zk")
    public String paymentzk(){
     
        return "springcloud with zookeeper:"+serverPort+"\t"+ UUID.randomUUID().toString();
    }

}

6、启动zookeeper服务端
在这里插入图片描述
7、启动zookeeper客户端
SpringCloud 2020-Zookeeper服务注册与发现(笔记)_第3张图片
8、用ls /命令查看zookeeper注册了哪些,目前只有一个默认的zookeeper节点
在这里插入图片描述
9、启动PaymentMain8004,发现报错了在这里插入图片描述
解决zookeeper版本jar包冲突问题:将zookeeper依赖的版本修改成和linux上面的zookeeper版本一样。修改pom.xml为以下


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020artifactId>
        <groupId>com.liukai.springcloudgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>cloud-provider-payment8004artifactId>

    <dependencies>

        <dependency>
            <groupId>com.liukai.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>${project.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
            
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeepergroupId>
                    <artifactId>zookeeperartifactId>
                exclusion>
            exclusions>
        dependency>
        
        
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.11version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

    dependencies>

project>

修改之后就能启动成功了
10、zookeeper客户端查看8004是否注册成功
SpringCloud 2020-Zookeeper服务注册与发现(笔记)_第4张图片
11、测试:访问http://localhost:8004/payment/zk
在这里插入图片描述

服务节点是临时节点还是持久节点:是临时节点
关闭了8004端口等一会儿,zookeeper会清理掉8004的服务

3、服务消费者注册进zookeeper

1、新建cloud-consumerzk-order80
2、pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud2020artifactId>
        <groupId>com.liukai.springcloudgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>cloud-provider-payment8004artifactId>

    <dependencies>

        <dependency>
            <groupId>com.liukai.springcloudgroupId>
            <artifactId>cloud-api-commonsartifactId>
            <version>${project.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>

        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-zookeeper-discoveryartifactId>
            
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeepergroupId>
                    <artifactId>zookeeperartifactId>
                exclusion>
            exclusions>
        dependency>
        
        
        <dependency>
            <groupId>org.apache.zookeepergroupId>
            <artifactId>zookeeperartifactId>
            <version>3.4.11version>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-devtoolsartifactId>
            <scope>runtimescope>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>

        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

    dependencies>

project>

3、yml

server:
  port: 80

spring:
  application:
    name: cloud-consumer-order
  cloud:
    zookeeper:
      connect-string: 192.168.4.100:2181

4、主启动类OrderZKMain80

package com.liukai.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * @author liukai
 * @version 1.0.0
 * @ClassName OrderZKMain80.java
 * @Description TODO
 * @createTime 2021年03月20日 22:27:00
 */
@SpringBootApplication
@EnableDiscoveryClient
public class OrderZKMain80 {
     

    public static void main(String[] args) {
     
            SpringApplication.run(OrderZKMain80.class);
    }
    
}

5、添加配置类ApplicationContextConfig.java

package com.liukai.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

/**
 * @author liukai
 * @version 1.0.0
 * @ClassName ApplicationContextConfig.java
 * @Description TODO
 * @createTime 2021年03月20日 22:29:00
 */
@Configuration
public class ApplicationContextConfig {
     

    // 注入RestTemplate
    @Bean
    @LoadBalanced   // 使用@LoadBalanced注解赋予RestTemplate负载均衡的能力。
    public RestTemplate getRestTemplate(){
     
        return new RestTemplate();
    }

}

6、controller

package com.liukai.springcloud.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

/**
 * @author liukai
 * @version 1.0.0
 * @ClassName OrderZKController.java
 * @Description TODO
 * @createTime 2021年03月20日 22:31:00
 */
@RestController
@Slf4j
public class OrderZKController {
     

    public static final String INVOKE_URL = "http://cloud-provider-payment";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping("/consumer/payment/zk")
    public String payment (){
     
        String result = restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class);
        return result;
    }
}

7、zookeeper客户端查看,发现cloud-consumer-order注册成功
在这里插入图片描述
8、测试 :访问http://localhost/consumer/payment/zk
在这里插入图片描述
搭建zookeeper的集群方式和eureka类似

4、下一篇:SpringCloud 2020-Consul服务注册与发现

SpringCloud 2020-Consul服务注册与发现

视频地址:

此笔记的视频地址:尚硅谷SprngCloud(H版&alibaba框架开发教程(大牛讲授SpringCloud))

你可能感兴趣的:(zookeeper,java,spring,cloud)