10、SpringCloud 系列:Nacos - 注册中心

news2025/7/5 3:38:40

SpringCloud 系列列表:

文章名文章地址
01、Eureka - 集群、服务发现https://blog.csdn.net/qq_46023503/article/details/128319023
02、Ribbon - 负载均衡https://blog.csdn.net/qq_46023503/article/details/128332288
03、OpenFeign - 远程调用https://blog.csdn.net/qq_46023503/article/details/128387961
04、Hystrix - 断路器https://blog.csdn.net/qq_46023503/article/details/128408601
05、Sleuth - 链路追踪https://blog.csdn.net/qq_46023503/article/details/128409339
06、Gateway - 网关https://blog.csdn.net/qq_46023503/article/details/128430842
07、Alibaba - 介绍https://blog.csdn.net/qq_46023503/article/details/128434080
08、Nacos - 安装、启动https://blog.csdn.net/qq_46023503/article/details/128460411
09、Nacos - 配置文件中心https://blog.csdn.net/qq_46023503/article/details/128460649
10、Nacos - 注册中心https://blog.csdn.net/qq_46023503/article/details/128460494

Nacos - 注册中心

  • 1 入门案例
    • 1.1 创建 SpringBoot 项目
    • 1.2 修改 pom 文件
    • 1.3 修改 yml 文件
    • 1.4 给启动类添加注解(此版本不加也行)
    • 1.5 启动 nacos 服务端,然后启动项目
  • 2 服务发现
    • 2.1 前置条件
    • 2.2 将两个服务配置到不同的命名空间中
    • 2.3 将两个服务配置到相同命名空间不同组中
    • 2.4 将两个服务配置到相同命名空间相同组中
  • 3 在 Nacos 中使用 OpenFeign
    • 3.1 前置条件
    • 3.2 在 two-service 中添加控制层测试方法
    • 3.3 修改 one-service 的 pom 文件
    • 3.4 在 one-service 中创建远程调用接口
    • 3.5 在 one-service 中创建控制层测试方法
    • 3.6 访问测试
  • 4 在 Nacos 中使用 Gateway
    • 4.1 前置条件
    • 4.2 创建 getway 项目
    • 4.3 访问测试
  • 5 Nacos Discovery Starter 更多的配置项
  • 6 集群
    • 6.1 准备三个 Nacos 服务端
  • 6.2 修改每个服务端的 application.properties
    • 6.3 修改每个服务器端的 cluster.conf.example
    • 6.4 启动测试

1 入门案例

1.1 创建 SpringBoot 项目

将 https://start.spring.io 改为 https://start.aliyun.com

1.2 修改 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!--修改 springboot 的版本号-->
        <version>2.3.12.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>cn.nacos</groupId>
    <artifactId>nacosclienta</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacosclienta</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
        <!--修改 springcloud 的版本号-->
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
        <!--添加 alibaba 的版本号-->
        <spring-cloud-alibaba.version>2.2.7.RELEASE</spring-cloud-alibaba.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 添加 nacos 的 jar 包-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- 添加 alibaba 的依赖管理 -->
    <dependencyManagement>
        <dependencies>
            <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>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>netflix-candidates</id>
            <name>Netflix Candidates</name>
            <url>https://artifactory-oss.prod.netflix.net/artifactory/maven-oss-candidates</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

1.3 修改 yml 文件

server:
  port: 8080
spring:
  application:
    name: nacosclenta
  cloud:
    nacos:
      server-addr: localhost:8848 # 向 nacos 服务端注册
      username: nacos # 账号
      password: nacos # 密码
      discovery:
        service: user-service # 指定名称,不写,默认为服务名称
        namespace: d7e9db40-b7ff-4360-b48b-162e985a8a3b # 指定命名空间,值为命名空间的 id 值,如果不指定命名空间,默认会注册到 public 中
        group: A-GROUP # 指定分组,没有会自定创建,如果不指定分组,默认是 DEFAULT_GROUP

1.4 给启动类添加注解(此版本不加也行)

@SpringBootApplication
@EnableDiscoveryClient // 开启 nacos 的服务发现
public class NacosclientaApplication {
    public static void main(String[] args) {
        SpringApplication.run(NacosclientaApplication.class, args);
    }
}

1.5 启动 nacos 服务端,然后启动项目

访问:http://localhost:8848/nacos
在这里插入图片描述

2 服务发现

2.1 前置条件

配置两个服务,一个为 one-service,另一个为 two-service

2.2 将两个服务配置到不同的命名空间中

使用 one-service 找寻 two-service

//one-service 的控制层
@RestController
public class TestController {
    @Autowired
    private DiscoveryClient discoveryClient;
    @GetMapping("/test")
    public String test(){
        List<ServiceInstance> iservice = discoveryClient.getInstances("two-service");
        return "ok";
    }
}

结果:访问 test ,发现结果为空,即访问不到

2.3 将两个服务配置到相同命名空间不同组中

结果:访问不到

2.4 将两个服务配置到相同命名空间相同组中

结果:可以访问到
在这里插入图片描述

3 在 Nacos 中使用 OpenFeign

3.1 前置条件

配置两个 nacos 服务,一个为 one-service:8080,另一个为 two-service:8081,两个服务在同一个命名空间同一个组中

3.2 在 two-service 中添加控制层测试方法

@RestController
public class BController {
    @GetMapping("info")
    public String info(){
        return "测试 feign 的远程调用";
    }
}

3.3 修改 one-service 的 pom 文件

添加 OpenFeign 的依赖和 springcloud 的管理依赖

<!--添加 openFeign 的依赖管理-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

<!--在 <dependencyManagement> 标签中添加 springcloud 的管理依赖-->
<dependency> 
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>${spring-cloud.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

3.4 在 one-service 中创建远程调用接口

@FeignClient("two-service") //注意名字为配置的名字
public interface IOpenFeign {
    @GetMapping("info")
    public String info();
}

3.5 在 one-service 中创建控制层测试方法

@RestController
public class TestController {
    @Autowired
    private IOpenFeign iOpenFeign;
    @GetMapping("/test")
    public String test(){
        return iOpenFeign.info();
    }
}

3.6 访问测试

访问 http://localhost:8080/test,浏览器会输出 “测试 feign 的远程调用”

4 在 Nacos 中使用 Gateway

4.1 前置条件

配置两个 nacos 服务,一个为 one-service:8080,另一个为 two-service:8081,两个服务在同一个命名空间同一个组中

4.2 创建 getway 项目

  • 选择 gateway 和 nacos-discovery 依赖
  • 在启动类上添加 @EnableDiscoveryClient
  • yml 文件
server:
  port: 80
spring:
  application:
    name: gateway
  cloud:
    nacos:
      server-addr: localhost:8848
      username: nacos
      password: nacos
      discovery: # 需要和其他两个服务在同一个命名空间和组下
        namespace: d7e9db40-b7ff-4360-b48b-162e985a8a3b
        group: A-GROUP
    gateway:
      discovery:
        locator:
          enabled: true # 开启动态路由
          lower-case-service-id: true # 开启小写

4.3 访问测试

访问 http://localhost:8080/test 和 http://localhost/one-service/test 的效果一致

5 Nacos Discovery Starter 更多的配置项

在这里插入图片描述

6 集群

6.1 准备三个 Nacos 服务端

在这里插入图片描述

6.2 修改每个服务端的 application.properties

位置:nacos\conf\application.properties

# 1、修改第21行的端口,分别设置为 8848、8850、8852
server.port=8848

#-------------------------

# 2、将30+行的数据库连接打开
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

6.3 修改每个服务器端的 cluster.conf.example

位置:nacos\conf\cluster.conf.example
将 cluster.conf.example 名字改为 cluster.conf

# 将每个服务器都以 ip地址:端口 的形式配置 
169.254.58.106:8848
169.254.58.106:8850
169.254.58.106:8852

6.4 启动测试

同时开始三个 nacos 服务端,出现一下结果集群成功
在这里插入图片描述

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

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

相关文章

41. 使用块的网络(VGG)代码实现

1. VGG块 在下面的代码中&#xff0c;我们定义了一个名为vgg_block的函数来实现一个VGG块。 该函数有三个参数&#xff0c;分别对应于卷积层的数量num_convs、输入通道的数量in_channels 和输出通道的数量out_channels. import torch from torch import nn from d2l import …

【玩转c++】c++ :string类讲解(万字详解)

目录 &#x1f341;1. 为什么要学习string类 &#x1f341;2. 标准库中的string类 &#x1f341;3. string类各种接口 默认成员函数 Iterators迭代器 capacity容量 Element access:元素访问 Modifiers:修改 字符串操作 成员变量 非成员函数 &#x1f341;4. 扩展阅读 本期主题…

stm32f407VET6 系统学习 day07 通用定时器, OLED 屏幕使用 PWM 的使用

1. 通用定时器的知识 1.STM32共有14个定时器&#xff0c;其中12个16位定时器&#xff0c;2个32 位定时器 2. 通用定时器特点 1. 16/32位向上、向下、向上/向下(中心对齐)计数模式&#xff0c;自动装载计数器&#xff08;TIMXCNT) 。 2. 16位可编程预分频器(TIMx_PSC)&…

-bash: lsof: command not found解决办法

简言 centos系统&#xff0c;检测端口时使用lsof命令发现lsof功能未开启&#xff0c;如下图 [rootiZwz9501p9hnysn92hpx27Z tnt_game]# lsof -bash: lsof: command not found 安装lsof centos系统下可以直接使用yum安装lsof功能&#xff0c;如下图 yum可自动完成安装lsof ls…

gitlab-ci.yml关键字(一)image、variables、include

image 这是一个全局关键字&#xff0c;如果流水线的执行器是使用docker来运行的话&#xff0c;那可以指定docker中的docker镜像。如果执行器是shell的话&#xff0c;那该关键字是无用的&#xff0c;即便机器中已近安装了docker的环境&#xff0c;该关键字可以在全局或者某一个…

NeurIPS2021 | ViTAE+: vision transformer中的归纳偏置探索

参考资料&#xff1a;NeurIPS 2021 | ViTAE: vision transformer中的归纳偏置探索 - 知乎 paper地址&#xff1a;https://openreview.net/pdf?id_RnHyIeu5Y5 论文标题&#xff1a;ViTAE: Vision Transformer Advanced by Exploring Intrinsic Inductive Bias code&#xff…

假设检验之卡方检验

之前我对卡方检验的了解都是一知半解的&#xff0c;即知道作用是对离散变量分布差异的比较&#xff0c;根据期望频数和观察频数的差异计算出来一个卡方值&#xff0c;之后根据自由度和显著性水平查卡方分布对应的临界值&#xff0c;比较大小得出有无明显差异的结论。 一般我们都…

基于FPGA平台实现 ARM Cortex-M0 SOC(一)简介

本系列笔记为基于FPGA平台实现 ARM Cortex-M0 SOC 集创赛作品复盘 Platform&#xff1a; ARM Cortex-M0 Design Srart AT510 XLINX FPGA ARM MDK 5 CM0-Design start 是ARM公司放出的一个免费的ARM 内核学习版本&#xff0c;它比M3还要简单&#xff0c;并且官方把整块代码模糊化…

TFN CK1840B 喇叭天线 定向 18GHz~40GHz

TFN CK1840B 喇叭天线 定向 18GHz~40GHz 产品概述 TFN CK1840B喇叭天线工作频率为 18GHz~40GHz。具有频带宽&#xff0c; 性能可靠&#xff0c; 增益高等优 点&#xff0c; 是理想的 EMC 测试、电子对抗等领域的定向接收、发射天线。 应用领域 ● 电子对抗领域 ● EMC 测试…

基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用

普通数码相机记录了红、绿、蓝三种波长的光&#xff0c;多光谱成像技术除了记录这三种波长光之外&#xff0c;还可以记录其他波长&#xff08;例如&#xff1a;近红外、热红外等&#xff09;光的信息。与昂贵、不易获取的高光谱、高空间分辨率卫星数据相比&#xff0c;中等分辨…

Gateway

Gateway—SpringCloud微服务网关组件 一、Spring Cloud Gateway简介 1.为什么要用Gateway&#xff1f; 在微服务架构中&#xff0c;通常一个系统会被拆分为多个微服务&#xff0c;微服务之间的调用可以用OpenFeign&#xff0c;但面对这么多微服务客户端调用会遇到哪些问题呢…

Hudi(3):Hudi之基本概念

目录 0. 相关文章链接 1. 时间轴&#xff08;TimeLine&#xff09; 1.1. Instant action&#xff1a;在表上执行的操作类型 1.2. Instant time 1.3. State 1.4. 两个时间概念 2. 文件布局&#xff08;File Layout&#xff09; 2.1. Hudi表的文件结构 2.2. Hudi存储的两…

Cocos 引擎生态部负责人李阳:己之所欲,可施于人,希望通过生态促进国内引擎技术发展

前言 “小小的身体&#xff0c;大大的能量&#xff0c;这个应该是我对大表姐最直接的感觉&#xff0c;在她娇小的身躯里蕴含了无限的精力和潜力&#xff0c;很像漫威里的神奇女侠&#xff0c;作为一个具备冒险精神的非典型程序员&#xff0c;大表姐热爱的体育活动都是很具挑战…

大数据系列——什么是ClickHouse?ClickHouse有什么用途?

目录 一、什么是ClickHouse 二、ClickHouse有什么用途 三、ClickHouse的不足 四、适用场景 五、ClickHouse特点 六、ClickHouse VS MySQL 七、类SQL 语句 八、核心概念 一、什么是ClickHouse clickHouse是俄罗斯的 Yandex 公司于 2016 年开源的列式存储数据库&#x…

win11系统用户名称为中文导致文件夹出现繁体字文件夹、系统路径配置错误修改教程(博主亲测,基于win11,系统文件保留)

写在前面&#xff1a;很多人在拿到新电脑激活那会&#xff0c;命名就是简单的中文&#xff0c;但是中文命名电脑系统名称&#xff0c;会导致系统用户文件夹自动命名为中文&#xff0c;在后期使用中会导致c盘系统用户文件夹下面出现不知名繁体字文件夹&#xff0c;甚至有的朋友会…

终难逃一阳

阳了&#xff0c;抗原试剂显示我阳了。每天都带口罩的我还是未能逃过此劫。真是覆巢之下&#xff0c;焉有完卵。 ​ 1.背景 12月初国家逐步放开防疫&#xff0c;随之而来的就是奥秘克戎肆虐全国。身边同事和朋友一个接着一个倒下&#xff0c;朋友圈里更是哀嚎一片。好在专家…

《CSAPP》笔记——链接、异常控制流、虚拟内存

文章目录传送门链接基础链接器的意义编译器驱动程序静态链接ELF目标文件格式可重定位目标文件符号和符号表链接过程符号解析解析规则静态链接库带有静态链接库的解析过程重定位重定位条目重定位节重定位符号引用重定位相对引用重定位绝对引用加载可执行目标文件动态链接共享库库…

Kafka 消费者组开发

Kafka consumer - 消费者组 上一篇文章学习到kafka消费者、消费者组之间处理消息的差异&#xff0c;总结起来就是&#xff1a; 同一个消费组的不同消费实例 共同消费topiic的消息, 一个消息只会消费一次&#xff1b; 也叫做集群消费同一个消息被不同的消费组同时消费&#xf…

机器学习基石1(ML基本概念和VC dimension)

文章目录一、什么是机器学习?二、什么时候可以使用机器学习?三、感知机perceptron四、机器学习的输入形式五、机器真的可以学习吗&#xff1f;六、vc dimension一、什么是机器学习? 其实第一个问题和第二个问题是穿插到一块儿回答的&#xff0c;首先机器学习要解决的是常规的…

RedisTemplate操作redis

目录 Redis Repositories方式 a、启用 Repository 功能 b、注解需要缓存的实体 c、创建一个 Repository 接口 d、测试类中测试 Redis Repositories方式 Spring Data Redis 从 1.7 开始提供 Redis Repositories &#xff0c;可以无缝的转换并存储 domain objects&#xff0…