SpringCloudAlibaba系列之Nacos-下(配置中心)

上篇SpringCloudAlibaba系列之Nacos-上(服务注册&发现)我们讲到了Nacos作为服务注册与发现的安装、使用情况,这次我们来说一下作为配置中心的集成和使用。

一、Nacos配置

命名空间:对应项目环境。开发、测试、预演和正式。

我这边命名空间之间就用的 dev、test、uat 和 prod ,不是用的系统自生成的uuid,这个意义不大。

 

配置管理:public空间一般是空的,一些临时项目会用一下。

其它环境下面会有正式项目的配置,配置文件命名如下:

项目名-环境名.yaml,如:以上的就是 elogserver项目在开发环境dev对应的配置文件。

基本也就是一些数据库配置啥的,毕竟有些内容是一般项目人员不需要或者没有权限看到的。

类似这些配置都可以放到配置中心来统一管理,特别是一些第三方对接或集成的关键信息,如:微信支付、支付宝支付,三方AppID,密钥啥的。

 

二、三方版本兼容

 这篇文章在编写时,还是基于当前项目的 SpringCloud2 环境实际情况操作的,因此:大家先要注意一下相关版本的情况:

SpringBoot 2.6.9 <--> SpringCloud 2021.0.8 <--> SpringCloudAlibaba 2021.1

 其中还有管理依赖,及 bootstrap 专用依赖。

 注意 bootstrap 的版本,只能用3.x.x 的版本,如果有 4 以上的会包错误的。

其它就是服务发现和注册中心的依赖了,版本就直接用SpringCloudAlibaba的对应版本。

 其它版本,如果是 SpringBoot3的,就比较简单了,三方都用最新版本的就可以了,只是JDK需要用 17+ 的。 

三、项目集成使用

 主配置文件调整:如果是 application.yml 或者 application.properties,文件改名为:bootstrap.yml。

还有不同环境的配置文件,如:application-dev.yml 这样的都不用了,基本只要一个 bootstrap.yml 就够了。

具体三部分如下:

第一部分:固定配置

包括项目启用的端口和项目请求初始地址:

#固定参数
server: port:
20000 # 项目默认端口,有单服应用集群时,用启动命令调整 servlet: context-path: /elogserver

如果这部分在不同环境下也要跟着变化的话,这部分可以没有,直接写到 Nacos 的各环境配置文件中。

第二部分:系统配置

#系统配置
spring:
  application:
    name: elogserver  #应用名称,最终配置文件会使用到。
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 10.12.58.206:8848
      config:
        server-addr: 10.12.58.206:8848 # Nacos 服务器地址
        namespace: ${spring.profiles.active} # 命名空间,默认使用 dev 开发环境
        file-extension: yaml

系统配置完成,默认配置文件的组成如下:

${spring.application.name}-${spring.profiles.active}${file-extension}

如我这边项目的测试环境配置文件,对应的是:命名空间 dev 下,elogserver-dev.yaml 的配置文件,可以找一下对应的文件是否存在。

第三部分:配置应用

举例,相关数据库及连接池配置

 数据库及连接池配置中,除固定参数外,其中最重要的6项配置内容是需要配置中心提供的,对应配置中心的内容如下,需要一一对应上:

 到此项目就能顺利获取配置中心的配置信息,完成项目的启动了。

如果是其它普通的配置参数,和之前 application 配置参数一样使用即可。

还有一个特别的优势,就是之前的配置参数,如果有变动,需要项目重启之后才能生效,而 Nacos配置中心的方式,再加上 @RefreshScope 注解,可以进行热刷新噢。

 这样 Nacos 配置中心调整了对应的配置参数内容,调用方直接刷新就可以获取最新的配置结果呢。

这对应一些项目的测试或线上问题协助处理,提供了便利。赞一个。

 

注:文强哥精品集,祝各位使用愉快!

posted @ 2023-07-20 10:03  Java365  阅读(56)  评论(0编辑  收藏  举报