SpringCloud系列(16)--将服务提供者Provider注册进Zookeeper

前言:在上一章节中我们说明了一些关于Eureka自我保护模式,而且自上一章节起关于Eureka的知识已经讲的差不多了,不过因为Eureka已经停更了,为了安全考虑,我们要用还在更新维护的注册中心来取代Eureka,而本章节则是关于如何使用Zookeeper来代替Eureka

Eureka停更说明:https://github.com/Netflix/eureka/wiki

大意就是Eureka2.0停更了,如果要继续使用Eureka,所产生的风险一切自负

准备环境:

需要先安装Zookeeper,如果没有安装的同学可以参考以下文章来进行安装

https://blog.csdn.net/m0_64284147/article/details/132260865

1、再次创建一个服务提供者模块,命名为provider-payment8004
(1)在父工程下新建模块
(2)选择模块的项目类型为Maven并选择模块要使用的JDK版本
(3)填写子模块的名称,然后点完成即可完成创建

效果图:

(4)修改provider-payment8004子模块的pom.xml文件,然后reolad一下,下载依赖

例:

XML 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>springcloud01</artifactId>
        <groupId>com.ken.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>provider-payment8004</artifactId>

    <dependencies>
        <!--以下依赖都没写版本号,没写版本号的情况下会引用父项目的版本-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--lombok插件-->
        <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>
        <!--引入自己定义的api调用包,可以使用Payment模块的entity-->
        <dependency>
            <groupId>com.ken.springcloud</groupId>
            <artifactId>api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
        <!--Zookeeper Clinet-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>
    </dependencies>

</project>
2、为子模块添加名为application的yml配置文件(注:yml是官方推荐的配置文件格式,最好使用yml文件而不是properties文件)

效果图:

3、修改application.yml文件配置
XML 复制代码
#服务端口号
server:
  port: 8004

#服务名称
spring:
  application:
    name: cloud-payment-service
  cloud:
    zookeeper:
      #zookeeper所在服务的ip和Client的端口号
      connect-string: 192.168.194.130:2181
4、为provider-payment8004子模块新建一个主启动类,类名输入com.ken.springcloud.PaymentMain8004,然后创建即可

效果图:

5、编写provider-payment8004子模块的主启动类
java 复制代码
package com.ken.springcloud;

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

@SpringBootApplication
//该注解用于向使用consul或zookeeper作为注册中心时注册服务
@EnableDiscoveryClient
public class PaymentMain8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class, args);
    }
}

效果图:

6、在com.ken.springcloud包下新建controller包和PaymentController控制类,在类名输入controller.PaymentController,然后创建即可

效果图:

7、编写PaymentController控制类的内容
java 复制代码
package com.ken.springcloud.controller;

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;

import java.util.UUID;

@RestController
@Slf4j
public class PaymentController {

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

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

}
8、启动Zookeeper
复制代码
./zkServer.sh start

效果图:

9、启动Zookeeper客户端
复制代码
./zkCli.sh

效果图:

10、查看zookeeper的节点
XML 复制代码
ls /

可以发现现在zookeeper里的节点就只有一个

效果图:

11、启动provider-payment8004子模块

效果图:

12、查看zookeeper现在的节点
XML 复制代码
ls /

可以发现多出了一个services的节点

效果图:

13、查看services节点的信息
XML 复制代码
ls /services

可以看到services节点的里有个名为cloud-payment-service的服务,这个服务就是我们的provider-payment8004服务,这证明provider-payment8004成功注册进了zookeeper里

效果图:

14、请求接口查看服务是否正常运行

在地址栏输入http://localhost:8004/payment/zk并回车调用接口,可以看到数据返回成功

15、查看服务的基本信息
(1)获取注册进zookeeper的服务的流水号
XML 复制代码
ls /services/cloud-payment-service

效果图:

(2)获取服务的基本信息
XML 复制代码
get /services/cloud-payment-service/636ff382-1979-4bcb-a0a2-e1aec44e79ce

效果图:

格式化后的json串:

其他:

1、注册进zookeeper的服务是临时节点

在把服务关停后,zookeeper检测不到服务的心跳后过一会就会把服务剔除,重新启动服务后又会恢复,但这时候服务的流水号就会改变

效果图:

相关推荐
wno70418 小时前
Spring Cloud Hystrix Dashboard仪表盘
spring·spring cloud·hystrix
BUG指挥官21 小时前
Redis已接入AI
数据库·人工智能·spring boot·redis·spring cloud
wno7041 天前
Spring Cloud Hystrix服务容错
spring·spring cloud·hystrix
苏渡苇2 天前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
java·后端·spring·spring cloud·springboot·性能监控
YOU OU3 天前
Spring Cloud Consul
spring cloud·consul·java-consul
重生之我是Java开发战士3 天前
【Spring Cloud】Eureka服务注册发现与LoadBalancer负载均衡
spring cloud·eureka·负载均衡
hm宋3 天前
ZooKeeper 容灾切换免重启实践:域名化配置与客户端自动迁移
分布式·zookeeper·云原生
谢亮_vipxieliang3 天前
ValidX vs Google Guava Preconditions:验证 vs 断言
java·spring boot·后端·spring cloud·hibernate·guava
夏天拐跑了西瓜4 天前
Spring Cloud 微服务实战(八):Hystrix熔断降级——从服务雪崩到断路器模式
spring cloud·hystrix·微服务
重生之我是Java开发战士5 天前
【Spring Cloud】认识微服务与工程搭建
spring·spring cloud·微服务