当前位置: 首页 > news >正文

SpringCloud系列篇:核心组件之注册中心组件

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于SpringCloud的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.注册中心组件是什么

二.注册中心组件的详解 

生活例子

例子分析

三. 代码演示注册中心组件的特点

1.依赖引入

(1)pom

(2)yml

①消费者

②生产者

2.生产者

启动类

controller

3.消费者

启动类

controller


上篇我详细的讲解了SpringCloud到底是什么,也通过生活中的例子去生动说明了,大家如果对于SpringCloud还是又疑问的话,可以看一下上一篇博文

那么这篇我就来详述一下SpringCloud中的核心组件--注册中心组件,也还是会结合生活例子来说明,这样也利于理解。

一.注册中心组件是什么

        注册中心是一种分布式系统中的组件,用于管理服务实例的注册和发现。在微服务架构中,服务可以被拆分成多个小的模块,这些模块可能部署在不同的主机和容器中。因此,为了让一个服务可以访问其他服务,它需要知道其他服务的地址和端口信息。而注册中心就是用来管理这些信息的。

        注册中心组件通常提供以下功能:

  1. 服务注册:服务提供者将自己的服务注册到注册中心中,包括服务名称、IP地址、端口号等信息。
  2. 服务发现:服务消费者从注册中心中查询可用的服务列表,并选择一个可用的服务进行调用。
  3. 服务健康检查:注册中心能够检测服务是否健康,及时剔除不健康的服务实例,避免服务调用失败。
  4. 负载均衡:注册中心可以根据一定的负载均衡策略,为服务消费者选择一个合适的服务实例进行调用。

二.注册中心组件的详解 

      如果只是说注册中心组件的定义,感觉太官方了,脑海中不能出现一个画面感,所以我这里按照自己的理解,给大家举一个通俗易懂的例子


生活例子

假设你需要看病

你去了一家大型医院

这个医院有很多个科室(类似于微服务)

...

每个科室都提供不同的医疗服务。你需要看的是内科,但是你不知道内科是在哪个楼层、哪个区域。这个时候你通常会找到导诊台,去询问内科位于哪个楼层的哪个区域

然后导诊台中的工作人员便会去告诉你具体的位置


例子分析

例子中的导诊台就相当于注册中心的这个组件,导诊台中管理着这个医院各个科室的信息,注册中心组件中管理着其他服务的地址和端口信息。有了导诊台,我们看病就不需要在整个医院中无脑寻找对应科室了,同样的,有了注册中心的组件,我们也不需要在整个服务中去寻找对应的服务。这样就可以节省很多的时间,提高效率。

三. 代码演示注册中心组件的特点

这里写的代码就是一个生产者拿取消费者中返回回来的信息【水蜜桃】

1.依赖引入

(1)pom

这里写一个module代表生产者,一个module代表消费者。其中也需要引入依赖,两个module中肯定有相同的依赖,那么我们可以把整个两个module都写在同一个maven项目下,

然后再把相同的依赖放在那个大项目中,如果两个module有用到其他的依赖,则可以直接在自身的pom文件中引入相应依赖。

父项目的依赖

<?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"><modelVersion>4.0.0</modelVersion><!-- 项目组织ID --><groupId>org.example</groupId><!-- 项目名称 --><artifactId>cloud</artifactId><!-- 项目版本号 --><version>1.0-SNAPSHOT</version><!-- 项目打包方式 --><packaging>pom</packaging><!-- 项目模块 --><modules><module>provider</module><module>consumer</module></modules><!-- 项目属性 --><properties><!-- Spring Boot版本号 --><spring-boot.version>2.7.8</spring-boot.version><!-- Spring Cloud版本号 --><spring-cloud.version>2021.0.3</spring-cloud.version><!-- Spring Cloud Alibaba版本号 --><spring-cloud-alibaba.version>2021.0.1.0</spring-cloud-alibaba.version></properties><!-- 项目依赖 --><dependencies><!-- Spring Boot测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- Spring Boot Web依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Cloud Alibaba Nacos服务发现依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- Spring Cloud OpenFeign依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- Lombok依赖 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- Spring Cloud LoadBalancer依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-loadbalancer</artifactId></dependency></dependencies><!-- 依赖管理 --><dependencyManagement><dependencies><!-- Spring Boot依赖管理 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud依赖管理 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- Spring Cloud Alibaba依赖管理 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement></project>

其中也需要在整个父项目中说明自己的子模块

相应的,子模块中也需要指明自己的父项目【因为需要用到父项目中的依赖】

(2)yml

①消费者
server:port: 8082
spring:cloud:nacos:discovery:server-addr: localhost:8848application:name: consumer
②生产者
server:port: 8081
spring:cloud:nacos:discovery:server-addr: localhost:8848application:name: provider

2.生产者

启动类

package com.provider.main;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication // 使用@SpringBootApplication注解,表示这是一个Spring Boot应用
@EnableDiscoveryClient // 使用@EnableDiscoveryClient注解,启用服务发现功能
public class ProviderApplication { // 定义主类为ProviderApplicationpublic static void main(String[] args) { // 定义主方法SpringApplication.run(ProviderApplication.class, args); // 运行Spring Boot应用,传入当前类和命令行参数}}

controller

package com.provider.main;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class TestController {// 使用@RequestMapping注解,指定该处理方法对应的URL路径为"/hello"@RequestMapping("/hello")public String hello() {// 返回一个字符串"return "我吃🍑🍑";}}

3.消费者

启动类

package com.consumer.main;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication // 启动类,包含@SpringBootConfiguration和@EnableAutoConfiguration注解
@EnableDiscoveryClient // 启用服务发现功能
public class ConsumerApplication {// 使用@LoadBalanced注解,表示该Bean会被负载均衡器管理@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate(); // 创建并返回一个RestTemplate实例}public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args); // 运行消费者应用,传入当前类和命令行参数}}

controller

package com.consumer.main;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;// 使用@RestController注解,表示这是一个处理HTTP请求的控制器类
@RestController
public class TestController {// 使用@Autowired注解,将RestTemplate实例注入到当前类中@Autowiredprivate RestTemplate restTemplate;// 使用@RequestMapping注解,指定该处理方法对应的URL路径为"/get_hello"@RequestMapping("/get_hello")public String get_hello() {// 使用restTemplate的getForObject方法,向"http://provider/hello"发送GET请求,并将响应结果转换为String类型return restTemplate.getForObject("http://provider/hello", String.class);}}

如果我们没有用到注册中心,那么我们在消费者中需要拿到生产者的数据,就必须要将请求它的那个路径写明白

这样写其实会非常麻烦,我这里为了演示,所以就只写了一个,那么如果是在实际项目中呢?会有许多的服务,那么我们每一个都需要给他写的很详尽,如果有一天这个请求的路径变了,不在localhost中,或者是请求的这个hello变了,那我们还需要找到对应的调用它的那些地方去修改,总之就是非常的麻烦。这里我用到的注册中心的组件是阿里的nacos。

只要我们引入相应的依赖

<!-- Spring Cloud Alibaba Nacos服务发现依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
server:port: 8082
spring:cloud:
#nacos依赖nacos:discovery:server-addr: localhost:8848application:name: provider

并且下载nacos这个软件

nacos下载地址icon-default.png?t=N7T8https://nacos.io/zh-cn/docs/what-is-nacos.html

解压之后运行就可以使用它啦

它的访问路径是8848/nacos

首次进入需要登录,默认账户和密码都是nacos

使用了nacos之后,我们的服务都会被他管理,这样我们就只需要填写相应的服务名,它就会帮我们去找对应的服务了

运行之后也是可以拿到里面的数据的

好啦,今天的分享就到这了,希望能够帮到你呢!😊😊 

相关文章:

SpringCloud系列篇:核心组件之注册中心组件

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于SpringCloud的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.注册中心组件是什么 二.注册中心…...

通过IP地址防范钓鱼网站诈骗的有效措施

随着互联网的普及&#xff0c;钓鱼网站诈骗成为一种广泛存在的网络犯罪行为。通过冒充合法网站&#xff0c;攻击者试图窃取用户的敏感信息。本文将探讨如何通过IP地址防范钓鱼网站诈骗&#xff0c;提供一系列有效的措施&#xff0c;以加强网络安全&#xff0c;保护用户免受诈骗…...

服务器GPU温度过高挂掉排查记录

服务器GPU挂掉 跑深度学习的代码的时候发现中断了。通过命令查看&#xff1a; nvidia-smi显示 Unable to determine the device handle for GPU 0000:01:00.0: Unknown Error。感觉很莫名其妙。通过重启大法之后&#xff0c;又能用一段时间。 shutdown -r now但是过了一个小…...

服务器终端快速下载coco数据集

######解压到当前文件夹 sudo apt-get install aria2 aria2c -c <url> #<url>即为官网下载地址# url # download images http://images.cocodataset.org/zips/train2017.zip http://images.cocodataset.org/zips/val2017.zip# download annotations http://i…...

el-select下拉框 change事件返回该项所有数据

主要代码 value-key <template><div><el-selectv-model"value"value-key"label"placeholder"请选择"change"selectChange"><el-optionv-for"item in options":key"item.label":label"…...

MySQL基础篇(一)SQL

视频地址: 黑马程序员 MySQL数据库入门到精通&#xff0c;从mysql安装到mysql高级、mysql优化全囊括 SQL&#xff0c;全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一 标准。 一、SQL通用语…...

多类指针式仪表自动读数系统的LabVIEW开发应用案例

多类指针式仪表自动读数系统的LabVIEW开发应用案例 工业环境中&#xff0c;多类指针式仪表的自动读数一直是一个具有挑战性的问题。本案例旨在展示如何使用LabVIEW开发一个高度智能化的多类指针式仪表自动读数系统&#xff0c;以应对复杂的工业环境。通过结合图像处理技术和深…...

攀登者2 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C++ 题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下…...

归并排序例题——逆序对的数量

做道简单一点的题巩固一下 归并排序实现步骤 将整个区间 [l, r] 划分为 [l, mid] 和 [mid1, r]。 递归排序 [l, mid] 和 [mid1, r]。 将左右两个有序序列合并为一个有序序列。 题目描述 给定一个长度为 n 的整数数列&#xff0c;请计算数列中的逆序对的数量。 逆序对的定义…...

数据库连接使用问题 - 1

原理 open-in-view 是 Spring Boot ⾃动加载 Spring Data JPA 提供的⼀个配置&#xff0c;全称为 spring.jpa.open-in-viewtrue&#xff0c;它只有 true 和 false 两个值&#xff0c;默认是 true。 这个配置为true时&#xff0c;会导致Web MVC请求处理的一开始&…...

【已解决】You have an error in your SQL syntax

报错讯息 java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘desc,target_url,sort,status,create_by,modify_by,created,last_update_time FROM…...

如何在Ubuntu安装SVN服务并结合cpolar实现公网TCP地址远程访问本地服务

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…...

windows监控进程是否还活着,查看内存使用率

windows监控进程是否还活着&#xff0c;查看内存使用率 1、导入库psutil pip install psutil2、查看进程是否活着 def is_process_running(self, process_name):# 查看程序是否还存活for process in psutil.process_iter():try:if process.name() process_name:return True…...

C#-词法结构

程序 C# 程序 (program) 由一个或多个源文件 (source file) 组成,源文件的正式名称是编译单元 (compilation unit)。源文件是有序的 Unicode 字符序列。 源文件与文件系统中的文件通常具有一对一的对应关系,但这种对应关系不是必需的。为实现可移植性的最大化,建议这些文件…...

GitHub pull request(傻瓜式入门版)

GitHub pull request Pull Request&#xff08;拉取请求&#xff09;是一种非常重要的协作机制&#xff0c;它是 Git 和 GitHub 等代码托管平台中常见的功能。在开源项目中&#xff0c;Pull Request 被广泛用于参与社区贡献&#xff0c;从而促进项目的发展。 一、fork代码 先…...

Studio 3T客户端连接Mongodb数据库服务

这里需要注意 一定要先开Studio 3T 到 创建连接时才开Mongodb服务 不然 Studio 3T 会找不到Mongodb服务 不知道这是不是 Studio 3T官方问题 期待解决吧 我们打开 Studio 3T 然后点击 Create a new connection 开始创建连接 新弹出的窗口中选择 Manually configure my connec…...

算法每日一题:赎金信 | 字符和整数

hello&#xff0c;大家好&#xff0c;我是星恒 今天给大家带来的题目是一道简单题目&#xff0c;主要帮大家复习一下字符串和字符的相关操作 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以&#…...

数字孪生在虚拟现实(VR)中的应用

数字孪生在虚拟现实&#xff08;VR&#xff09;中的应用为用户提供了更深入、沉浸式的体验&#xff0c;同时通过数字孪生技术模拟真实世界的物理实体。以下是数字孪生在VR中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发…...

iOS实时查看App运行日志

目录 一、设备连接 二、使用克魔助手查看日志 三、过滤我们自己App的日志 &#x1f4dd; 摘要&#xff1a; 本文介绍了如何在iOS iPhone设备上实时查看输出在console控制台的日志。通过克魔助手工具&#xff0c;我们可以连接手机并方便地筛选我们自己App的日志。 &#x1f4…...

论文阅读:通过时空生成卷积网络合成动态模式(重点论文)

原文链接 github code 介绍视频 视频序列包含丰富的动态模式&#xff0c;例如在时域中表现出平稳性的动态纹理模式&#xff0c;以及在空间或时域中表现出非平稳的动作模式。 我们证明了时空生成卷积网络可用于建模和合成动态模式。 该模型定义了视频序列上的概率分布&#xff0…...

html2canvas+jsPDF导出超长网页的PDF

项目需求:有一个网页大概60000px的高度,现在需要导出为PDF index.vue <template><div class"ctn"><div class"pdf-ctn"><div class"pdf-panel" ><div class"pdf-inside-panel" id"myList">&…...

云计算:OpenStack 分布式架构管理VXLAN网络(单控制节点与多计算节点)

目录 一、实验 1.环境 2.各节点新增网卡准备VXLAN网络 3.控制节点配置私有网络 4.计算节点1配置私有网络 5.计算节点2配置私有网络 6.重启服务 7.修改Dashboard 8.新建项目&#xff08;租户&#xff09;及用户 9.新建网络与子网 10.新建实例 11.新建路由 12.新增浮…...

MATLAB --- dlmread( )函数的用法

dlmread() 是 MATLAB 中用于读取以特定分隔符分隔的文本文件数据的函数 下面是 dlmread() 函数的用法&#xff1a; M dlmread(filename) M dlmread(filename, delimiter) M dlmread(filename, delimiter, R, C) M dlmread(filename, delimiter, range)参数说明&#xff1…...

STM32CubeMX RS485接口使用

一、基本知识 TTL&#xff08;Transistor-Transistor Logic&#xff09;&#xff1a; 电平范围&#xff1a; 逻辑1对应于2.4V–5V&#xff0c;逻辑0对应于0V–0.5V。通信特点&#xff1a; 全双工。特点&#xff1a; 常见于单片机和微控制器的IO电平&#xff0c;USB转TTL模块通常…...

ClickHouse(20)ClickHouse集成PostgreSQL表引擎详细解析

文章目录 PostgreSQL创建一张表实施细节用法示例 资料分享参考文章 PostgreSQL PostgreSQL 引擎允许 ClickHouse 对存储在远程 PostgreSQL 服务器上的数据执行 SELECT 和 INSERT 查询. 创建一张表 CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster] (name…...

R304S 指纹识别模块功能实现示例

1 基本通信流程 1.1 UART 命令包的处理过程 1.2 UART 数据包的发送过程 UART 传输数据包前&#xff0c;首先要接收到传输数据包的指令包&#xff0c;做好传输准备后发送成功应答包&#xff0c;最后才开始传输数据包。数据包主要包括&#xff1a;包头、设备地址、包标识、包长…...

2、Excel:基础概念、表格结构与常见函数

数据来源&#xff1a;八月成交数据 数据初探 业务背景 数据来源行业&#xff1a;金融行业&#xff08;根据应收利息和逾期金额字段来判断&#xff09; 可以猜测&#xff1a; 业务主体&#xff1a;某互联网金融公司&#xff08;类似支付宝&#xff09;也业务模式&#xff1a;给…...

鱼类识别Python+深度学习人工智能+TensorFlow+卷积神经网络算法

一、介绍 鱼类识别系统。使用Python作为主要编程语言开发&#xff0c;通过收集常见的30种鱼类&#xff08;‘墨鱼’, ‘多宝鱼’, ‘带鱼’, ‘石斑鱼’, ‘秋刀鱼’, ‘章鱼’, ‘红鱼’, ‘罗非鱼’, ‘胖头鱼’, ‘草鱼’, ‘银鱼’, ‘青鱼’, ‘马头鱼’, ‘鱿鱼’, ‘鲇…...

ThreadLocal线程重用导致用户信息错乱的 Bug

在生产上遇到一个诡异的问题&#xff0c;有时获取到的用户信息是别人的。查看代码后&#xff0c;我发现他使用了 ThreadLocal 来缓存获取到的用户信息。 我们知道&#xff0c;ThreadLocal 适用于变量在线程间隔离&#xff0c;而在方法或类间共享的场景。如果用户信息的获取比较…...

洛谷——P1143 进制转换

文章目录 一、题目进制转换题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 二、题解基本思路&#xff1a; 一、题目 进制转换 题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入格式 共三行&#xff0c;第一行是一个正整数&#xff0c;表示需要转换的…...

东莞横沥做网站/人员优化方案

jQuery 1.4 最近发布了。 超乎大家的预期&#xff0c;这次并非简单的修修补补&#xff0c;1.4 包含了很多新特性、功能增强和性能提升&#xff01;本文即向您介绍这些可能对你十分有用的新特性和优化增强。你可以立刻下载jQuery 1.4试用&#xff1a; http://code.jquery.com/jq…...

汽车租赁网站怎么做/搜索引擎广告优化

该文章的原创pdf文档下载地址为&#xff1a;链接: http://pan.baidu.com/s/1qYhC3ik密码: 7buf&#xfeff;&#xfeff;&#xfeff;&#xfeff;第 4 章 MonkeyRunner类使用说明 Monkeyrunner类包含静态实用方法&#xff0c;方法列表如下&#xff1a; 返回类型 方法名 功…...

常州好一点的网站建设/seo视频教程百度云

1、报错截图&#xff1a; 2、报错原因&#xff1a; mysql 的时区在东4区&#xff0c;web服务器的时区在东8区 3、修改&#xff1a; 在url后加上&serverTimezoneGMT%2B8 更改前代码 driverClasscom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/test?useUnicodetrue…...

做网站哪家好 青岛/网页版登录入口

1.安装Docker PS&#xff1a;先打开网络 yum [Errno 256] No more mirrors to try 解决方法 输入下面的命令即可解决问题&#xff1a; yum clean all yum makecache &#xff08;1&#xff09;安装docker sudo yum install docker PS: 遇报错 Another app is currentlty holdin…...

怎么制作代码/网站seo优化徐州百度网络

作为一个使用php 的web开发者&#xff0c;我们都知道php大概是拥有最多的代码库的web开发语言了&#xff0c;所以无论你的项目中向包含什么功能&#xff0c;我们都应该优先考虑开源的项目。why? 开源项目都是许多人共同工作的&#xff0c;应该比一个人的工作做得好 你可以免费…...

做外国的网站卖东西/seo排名优化软件有用吗

在QT开发时&#xff0c;有里需要调用已经写好的DLL来实现一些功能&#xff0c;那要如何调用呢&#xff1f;我们先建一个DLL。 在VS2012中建立C WIN32的DLL空项目DllTest&#xff0c;然后添加头文件和CPP文件&#xff0c;具体如下 Calculate.h #ifdef __cplusplus #define EX…...