SpringCloud学习笔记——服务注册中心——Zookeeper

SpringCloud学习笔记——服务注册中心——Zookeeper

参考:尚硅谷2020最新版SpringCloud(H版&alibaba)——周阳

2. Zookeeper

zookeeper安装

  1. 下载zookeeper

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

  2. 解压

    tar -xvzf zookeeper-3.4.14.tar.gz

  3. 进入conf文件夹,复制一份zoo_sample.cfg并重命名为zoo.cfg

    cd conf

    cp zoo_sample.cfg zoo.cfg

  4. 修改配置文件

    dataDir=/home/naclo/soft/zookeeper/data
    dataLogDir=/home/naclo/soft/zookeeper/log
    
  5. 配置环境变量

    • 使用vi打开etc目录下的profile文件vi /etc/profile

    • 在末尾配置环境变量

      export ZOOKEEPER_HOME=/home/naclo/soft/zookeeper-3.4.14
      export PATH=$PATH:$ZOOKEEPER_HOME/bin
      
    • 写入信息保存,使配置文件生效

      source /etc/profile

  6. 启动zookeeper

    zkServer.sh start

  7. 停止zookeeper

    zkServer.sh stop

  8. 关闭防火墙

    systemctl stop firewalld

  9. 连接zookeeper客户端

    ./zkCli.sh

  10. 查看当前节点数

    ls /

创建服务提供者并注册

  1. 创建子模块,子模块名称

    cloud-provider-payment8004

  2. pom依赖

    <dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency><!-- 引入自己定义的api通用包,可以使用Payment支付Entity -->
            <groupId>com.naclo</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!-- SpringBoot整合zookeeper客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--排除自带的zookeeper3.5.3-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.14和服务器版本一致-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
  3. 创建application.yml

    #8004表示注册到zookeeper服务器的支付服务提供者端口号
    server:
      port: 8004
    
    #服务别名----注册zookeeper到注册中心名称
    spring:
      application:
        name: cloud-provider-payment
      cloud:
        zookeeper:
          connect-string: 192.168.119.128:2181
    
  4. 创建主启动类PaymentMain8004

    @SpringBootApplication
    @EnableDiscoveryClient
    public class PaymentMain8004 {
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain8004.class, args);
        }
    }
    
  5. 编写PaymentController

    @RestController
    @Slf4j
    public class PaymentController {
        @Value("${server.port}")
        private String serverPort;
    
        @RequestMapping(value = "/payment/zk")
        public String paymentzk() {
            return "springcloud with zookeeper: " + serverPort + "\t" + UUID.randomUUID().toString();
        }
    }
    
  6. 版本冲突解决

    <!-- SpringBoot整合zookeeper客户端 -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        <!--排除自带的zookeeper3.5.3-->
        <exclusions>
            <exclusion>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--添加zookeeper3.4.14和服务器版本一致-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.14</version>
    </dependency>
    
  7. 启动,测试
    在这里插入图片描述

创建服务消费者并注册

  1. 创建子模块,子模块名称

    cloud-consumerzk-order80

  2. pom依赖

    <dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot整合zookeeper客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--排除自带的zookeeper3.5.3-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.14和服务器版本一致-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.14</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
  3. 创建application.yml

    server:
      port: 80
    
    spring:
      application:
        name: cloud-consumer-order
      cloud:
        #注册到zookeeper地址
        zookeeper:
          connect-string: 192.168.119.128:2181
    
  4. 创建主启动类OrderZKMain80

    @SpringBootApplication
    @EnableDiscoveryClient
    public class OrderZKMain80 {
        public static void main(String[] args) {
            SpringApplication.run(OrderZKMain80.class, args);
        }
    }
    
  5. 引入RestTemplate

    @Configuration
    public class ApplicationContextConfig {
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate() {
            return new RestTemplate();
        }
    }
    
  6. 编写controller

    @RestController
    @Slf4j
    public class OrderZKController {
        public static final String INVOKE_URL = "http://cloud-provider-payment";
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping(value = "/consumer/payment/zk")
        public String paymentInfo() {
            String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);
            return result;
        }
    }
    
  7. 启动,测试

猜你喜欢

转载自blog.csdn.net/qq_24191395/article/details/106934975