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 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文件配置
#服务端口号
server:port: 8004#服务名称
spring:application:name: cloud-payment-servicecloud:zookeeper:#zookeeper所在服务的ip和Client的端口号connect-string: 192.168.194.130:2181

4、为provider-payment8004子模块新建一个主启动类,类名输入com.ken.springcloud.PaymentMain8004,然后创建即可

 效果图:

5、编写provider-payment8004子模块的主启动类
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控制类的内容 
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的节点
ls /

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

效果图: 

11、启动provider-payment8004子模块

效果图: 

12、查看zookeeper现在的节点
ls /

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

效果图:

 

13、查看services节点的信息
ls /services

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

效果图: 

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

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

 

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

效果图: 

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

效果图: 

格式化后的json串:

其他:

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

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

效果图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink面试(2)

Flink面试&#xff08;1&#xff09;-CSDN博客 9. Flink 状态如何存储&#xff1f; 在 Flink 中&#xff0c;状态存储 被叫做 StateBackend&#xff0c;它具备两种能力&#xff1a; 在计算过程中提供访问 State 能力&#xff0c;开发者在编写业务逻辑中能够使用 StateBacken…

Python IO流

1.什么是IO&#xff1f; IO&#xff08;输入/输出&#xff09;是计算机程序与外部世界进行数据交换的一种方式。在Python中&#xff0c;IO操作通常涉及文件、网络、标准输入和输出等。Python的IO操作可以分为两种类型&#xff1a;文本IO和二进制IO。 文本IO&#xff1a;用于读…

网络数据包嗅探器工具

组织的网络非常庞大&#xff0c;包含服务器、交换机、路由器和接入点等众多节点&#xff0c;由于许多资源和流量不断通过这些节点&#xff0c;因此很难确定大量流量是真实的还是安全攻击的迹象&#xff0c;了解和了解组织的网络流量至关重要&#xff0c;一个有用的资源是网络数…

MySQL--mysql的安装(压缩包安装保姆级教程)

官网下载&#xff1a;www.mysql.com MySQL :: Download MySQL Community Server (Archived Versions) 1.MySQL下载流程&#xff1a; 第一步&#xff1a;点击download&#xff0c; 下滑找到MySQL community&#xff08;gpl&#xff09;Downloads>> 第二步&#xff1a;点…

通俗易懂,十分钟让你了解并上手 Docker

通俗易懂&#xff0c;十分钟让你了解并上手 Docker 一、Docker 能拿来解决什么问题二、Docker 的概念与模型1. 容器化技术2. 镜像的概念3. Docker与虚拟机 三. Docker的使用1. 环境安装2. 制作镜像3. 镜像管理&#xff08;1&#xff09; 图形界面&#xff08;2&#xff09; 命令…

MySQL 8.0性能优化实战培训

课程介绍 【云贝独家】MySQL 性能优化进阶课程&#xff0c;引领你的职业巅峰&#xff01; 同学们&#xff0c;你们是否被各种工作中的性能问题困扰&#xff1f;是否渴望提升自己在MySQL数据库方面的技术能力&#xff0c;掌握最新最前沿的技术知识呢&#xff1f; 我们讲师为你带…

深度学习中的黑科技:自监督学习(Self-Supervised Learning)

在人工智能领域&#xff0c;深度学习已成为推动技术革新的核心力量。然而&#xff0c;深度学习的一个重要瓶颈是对大量标记数据的依赖性。在这个背景下&#xff0c;自监督学习(Self-Supervised Learning, SSL)作为一种新兴的学习范式&#xff0c;越来越受到研究者的关注。自监督…

Java23种设计模式-创建型模式之工厂方法模式

工厂方法模式&#xff08;Factory Method Pattern&#xff09; 一种创建型设计模式&#xff0c;它定义了一个用于创建对象的接口&#xff0c;让子类决定将哪一个类实例化&#xff0c;从而将产品的实例化推迟到子类中。这种模式的主要角色包括&#xff1a; 角色1&#xff1a;抽…

内核技术解析

GitHub - floesen/KExecDD: Admin to Kernel code execution using the KSecDD driver https://security.stackexchange.com/questions/270383/how-does-the-av-inject-their-own-dll-in-each-new-process

spdlog 日志库部分源码说明——让你可以自定义的指定自动切换日志时间

前言 针对 网络上spdlog日志库目前存在的使用方式固定&#xff0c;不能发挥这个库本身应有价值的情况&#xff0c;这里对一些支持场景进行说明&#xff0c;以供初学者省去阅读源码的时间&#xff0c;直接上手使用 涉及源码 在说明过程中使用spdlog库自身提供的使用说明示例&…

Coursera: An Introduction to American Law 学习笔记 Week 03: Property Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 03: Property LawKey Property Law TermsSupplemental Re…

主从模式与AI大模型的结合

主从模式是一种分布式计算的模式&#xff0c;其中一个节点作为主节点负责接收和分发任务&#xff0c;其他节点作为从节点负责执行任务并将结果返回给主节点。AI大模型是指参数量非常庞大的人工智能模型&#xff0c;如深度学习的神经网络模型。 将主从模式与AI大模型结合可以实…

Revit二次开发环境Addin和Lookup配置快速上手教程

一、背景 经常有小伙伴被开发环境的配置难倒&#xff0c;总不能让这些兄弟倒在第一步吧&#xff0c;骑士特意做了一个傻瓜式的教学&#xff0c;希望对初学者有所帮助&#xff01; 二、教程 Revit开发利器Addin和RevitLookup快速安装教学 https://www.bilibili.com/video/BV1…

vue实现弹窗的动态导入(:is=“dialogName“)

组件的动态挂载 弹窗aaa.vue <template><el-dialogwidth"700px "v-dialog-outdestroy-on-closev-if"dialogVisible":title"title":visible"dialogVisible":before-close"hideDialog":close-on-click-modal"…

多功能气象传感器解析

TH-WQX5多功能气象传感器在监测要素上越来越丰富。除了传统的温度、湿度、风速、风向等基本气象要素外&#xff0c;现代的多功能气象传感器还能够监测降雨量、大气压力、光照强度、紫外线强度、土壤温湿度等多种参数。这些数据的获取&#xff0c;使得农业生产者能够更全面地了解…

【计算机系统】

常用的寄存器%rsp、%rip、%rdi、%rsi、%rax有什么特殊作用 %rsp&#xff1a;保存栈顶地址%rip&#xff1a;保存下一条将要被执行的指令的内存地址%rdi&#xff1a;函数第一个参数传参%rsi&#xff1a;函数第二个参数传参%rax&#xff1a;保存函数返回值 程序GDB、GCC、OBJDUMP、…

redisson有几种分布式算法

Redisson 提供了多种分布式锁算法&#xff0c;以适应不同的应用场景和需求。其中一些常见的分布式锁算法包括&#xff1a; 可重入锁&#xff08;Reentrant Lock&#xff09;&#xff1a; 可重入锁允许同一个线程多次获取锁&#xff0c;每次获取后计数器加 1&#xff0c;释放锁…

4款值得推荐的AI辅助编程工具(支持C#语言)

前言 在这个AI迅速发展的阶段&#xff0c;涌现出了一大批好用的AI辅助编程工具。AI辅助编程工具能够提高开发效率、改善代码质量、降低bug率&#xff0c;是现代软件开发过程中的重要助手。今天大姚给大家分享4款AI辅助编程工具&#xff08;并且都支持C#语言&#xff09;&#x…

ChromaDB教程

使用 Chroma DB&#xff0c;管理文本文档、将文本嵌入以及进行相似度搜索。 随着大型语言模型 &#xff08;LLM&#xff09; 及其应用的兴起&#xff0c;我们看到向量数据库越来越受欢迎。这是因为使用 LLM 需要一种与传统机器学习模型不同的方法。 LLM 的核心支持技术之一是…

Linux 文件/目录管理(头歌实训)

目录 任务描述 相关知识 Linux 创建文件 Linux 删除文件 编程要求 测试说明 任务描述 相关知识 Linux 创建目录 Linux 删除目录 编程要求 测试说明 任务描述 相关知识 Linux 拷贝文件 Linux 重命名文件 编程要求 测试说明 任务描述 相关知识 Linux 拷贝目…