关于Spring Cloud Alibaba Nacos的配置中心与服务注册与服务发现以及配置中有可能遇到的问题

首先需要先创建一个Spring Boot项目,并导入对应版本所需依赖,如Spring Cloud,SpringCloudAlibaba等等。。

(一定要严格参照一下版本的对应,否则后期会引发不可估量的错误)具体请参考官网的版本对应版本发布说明 | Spring Cloud Alibaba (aliyun.com)

本人使用的是2.2.0.RELEASE版本的springboot,以下為Spring Cloud推荐大家使用低版本的依赖

SpringCloud Alibaba 对应的部分版本依赖

依赖加载完成后,初步构建就成功了,接下来就是

配置nacos配置中心

首先先下载对应版本的Nacos Serve,关于各个组件的版本也需要根据官方文档使用对应的版本,因为不同版本的配置方式会有些许不同,笔者使用的2.2.0.RELEASE对应的版本为1.1.4

推荐去GitHub上面下载Releases · alibaba/nacos (github.com)

选择 nacos-server-1.1.4.zip下载。

下载好后解压缩打开bin文件夹,双击startup.cmd

然后打开浏览器输入链接127.0.0.1:8848/nacos

输入账号:nacos 密码:nacos

即可进入到如下页面(如若初次登陆,配置中心应为空)

然后接下来就是加入nacos配置中心的有关依赖

需要在 pom.xml 文件中引入 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-nacos-config 的 starter:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

创建bootstrap.properties(在读取项目配置时,该文件优先读取)

并写入以下内容

#(项目的模块名,以demo为例)
spring.application.name=dmeo
#配置服务中心
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#开启热刷新
spring.cloud.nacos.config.refresh-enabled=true

然后再次进入到nacos的配置管理页面点击右上角的+号添加新数据集(Data Id)

dataID为项目模块名.properties,例如demo.properties

默认分组

配置格式选择properties

然后写入相关配置信息

如 :

demo.user.name='zhangshang'

demo.user.age=18

然后点击保存

在需要读取配置的类中添加 @RefreshScope 标签(作用于即时刷新)

创建以下属性,并添加@Value标签进行赋值,

然后写一个获取值对应的方法

运行主类,打开浏览器即可发现

在nacos配置中心中修改了配置也无需重启应用即可动态刷新数据,例如在配置中心中修改配置为19

浏览器刷新一下即可更新配置信息

当本地也存在相同的配置时,有配置中心将默认优先使用配置中心的配置,没有则使用默认的本地配置文件

nacos配置中心进阶操作

1.运用命名空间实现配置隔离

在配置中心中,默认的配置命名为public(保留空间),所有默认的新增配置都在public命名空间

         可以在命名空间创建多个命名空间,例如test、dev等等命名空间,每创建一个新的命名空间,都会生成对应的命名空间ID

如果想读取该命名空间的配置信息,则需要在bootstrap.properties配置文件中中添加新的属性,如下所示,即可读取该命名空间对应的配置信息。

#命名空间ID
spring.cloud.nacos.config.namespace=(空间命名ID)
在配置列表的上方即可选择不同的命名空间,在命名空间内,可以自由创建不同的配置,创在建配置时,输入分组的名字,例如test分组,dev分组等等即可创建新的分组,如若,只配置了命名空间id但未配置分组id就会默认读取该空间内的DEFAULT_GROUP(默认分组)

 

 

在nacos中命名空间中创建了新的分组,则需要则需要在bootstrap.properties配置文件中中添加新的属性,如下所示,即可读取该命名空间中分组对应的配置信息。  
#命名空间ID
spring.cloud.nacos.config.namespace=(命名空间)
#命名空间中的分组
spring.cloud.nacos.config.group=(命名空间中的分组)
不同的命名空间下,可以存在相同的 Group Data ID 的配置。例如dev命名空间中能够存在group1,test命名空间中也能够存在相同的分组group1, 在每个命名空间中,如若未指定分组即会默认为DEFAULT_GROUP分组, Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生 产环境的资源(如配置、服务)隔离,又或者是根据不同模块的配置隔离等等。。

2.配置集

        一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配
置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级
别等配置项,例如application,yml中存在数据库驱动配置,nacos注册中心配置,等等。。
3.配置集ID
       
        命名空间中的配置文件名,例如前面创建的demo.properties,即意为配置集ID,类似文件名的存在

5.总结

        论如何达到不同模块之间的配置隔离,环境隔离,则需要为不同的模块创建对应的命名空间,再在不同的模块命名空间中创建不同的分组,如生产环境分组,测试环境分组等等,即可达到,不同模块之间的配置隔离,生产环境测试环境隔离

        

---------------------------------------------------------------------------------------------------------------------------------

配置nacos服务注册中心的

引入相关依赖

  <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>

在application.yml文件中添加如下配置

spring:
  application:
    name: (模块名)
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

使用 @EnableDiscoveryClient 注解开启服务注册与发现功能:

启动应用,在Nacos Serve服务即可查看到该服务

---------------------------------------------------------------------------------------------------------------------------------可能遇到的问题

1.配置中心无法热刷新(及时更新)

解决办法:

        1)首先先检查对应的springboot版本与spring cloud版本是否相对应,笔者曾因为版本不对应而导致及时更新失败

        2)高版本的springboot 2.4及以上版本需要添加spring-cloud-starter-bootstrap依赖

        3)重启nacos

        4)查看控制台日志,以及nacos日志(nacos-server-1.1.4\nacos\bin\logs)查看具体报错

2.配置服务注册中心无法注册服务

        1)检查导入的依赖是否正确

        2)高版本的springboot服务注册方式有些许不同,具体请参考官网文档SpringCloudAlibaba | Spring Cloud Alibaba (aliyun.com)

        3)服务注册中心启动失败(具体查看nacos日志),高版本的需要选择以非集群方式启动,打开nacos的bin目录,选择以命令行方式打开,输入以下命令,具体启动方式请参考官网SpringCloudAlibaba | Spring Cloud Alibaba (aliyun.com)

startup.cmd -m standalone

配置nacos服务消费

1.引入open-feign依赖
  <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
2.在调用服务的模块编写一个接口添加@FeignClinent注解,告诉springcloud这个接口需要调用远程服务,调用的模块是哪个
  (1)声明接口的每个方法都是调用的哪个远程服务的方法请求路径,请求路径要与源接口的请求一致

3.在application中开启远程调用,标注需要扫描的接口

这样就完成了服务消费的配置。

------------------------------------------------------------------------------------------------------------------------

以上内容为本人的学习记录,仅供参考,具体流程请参考官网文档,如有错误,恳请指正,就酱~

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Alibaba Nacos 是一个服务注册中心和配置中心,可以实现服务注册发现配置的动态管理等功能,同时还提供了容灾和高可用的支持。下面简单介绍如何使用 Nacos 实现 Spring Cloud配置容灾。 首先,在应用的 `pom.xml` 文件中添加如下依赖: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency> ``` 然后在 `application.properties` 中配置 Nacos 的地址和应用的名称: ```properties spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.namespace=your-namespace spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace=your-namespace spring.cloud.nacos.config.file-extension=properties spring.application.name=your-application-name ``` 其中 `server-addr` 是 Nacos 的地址,`namespace` 是命名空间,`file-extension` 是配置文件的扩展名,`application.name` 是应用的名称。 接着在 `bootstrap.properties` 中配置应用的环境和配置来源: ```properties spring.profiles.active=dev spring.cloud.nacos.config.prefix=${spring.application.name}-${spring.profiles.active} spring.cloud.nacos.config.group=DEFAULT_GROUP spring.cloud.nacos.config.shared-dataids=${spring.application.name}-${spring.profiles.active}.properties ``` 其中 `spring.profiles.active` 是应用的环境,`prefix` 是配置文件的前缀,`group` 是配置文件所在的分组,`shared-dataids` 是配置文件的名称。 最后,在代码中使用 `@Value` 注解来获取配置项的值: ```java @RestController public class ConfigController { @Value("${config.key}") private String configValue; @GetMapping("/config") public String getConfig() { return configValue; } } ``` 其中 `config.key` 是配置项的名称。 以上就是使用 Nacos 实现 Spring Cloud配置容灾的简单示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值