SpringCloud集成Nacos配置管理


title: SpringCloud集成Nacos配置管理
date: 2020-01-11 19:15:00
categories: Nacos
description: SpringCloud集成Nacos配置管理

1. 目录

SpringCloud集成Nacos配置管理_第1张图片

SpringCloud集成Nacos配置管理_第2张图片

  • 1. 目录
  • 2. 简介
  • 3. 新建配置
    • 3.1. data id规则
    • 3.2. 创建配置文件
  • 4. 添加依赖
    • 4.1. 父级依赖
    • 4.2. 依赖
  • 5. resource文件
    • 5.1. bootstrap.properties
    • 5.2. application.yml
  • 6. mybatis配置
  • 7. 案例
  • 8. 7.Endpoint 信息查看
  • 9. 源码

2. 简介

对Nacos在CentOS中的安装还了解的话,请参考 [[CentOS环境下安装Nacos]]

在实际开发和运维支撑过程中,都遇到对服务中配置文件的管理,如果需要管理的配置文件数量较少,带来相关工作不是很多,当我们面对成百上千个配置文件需要管理,这想想都让人头疼,如果我们稍有不慎将文件改错、漏改以及配置不生效,瞬间让人怀疑人生。

所以面对此类场景,我们引入Nacos,在Nacos控制台上我们可以对健康状态管理,对服务治理,减轻分布式配置管理等方面的管控能力,以便进一步帮助用户降低管理微服务应用架构的成本。

3. 新建配置

3.1. data id规则

SpringCloud集成Nacos配置管理_第3张图片

打开Nacos管理页面,打开:配置管理=>配置列表,新建配置,对于Data ID我们约定命名规则是:

${prefix}-${spring.profile.active}.${file-extension}

prefix 默认是spring.application.name,在SpringCloud中我们可以通过spring.cloud.nacos.config.prefix来配置

spring.profile.active当前环境对应的profile,通过spring.profile.active来配置

file-exetension为配置内容的数据格式,可以通过spring.cloud.nacos.config.file-extension来配置。截止当前只支持propertiesyaml类型

当spring.profile.active未配置时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 {prefix}.{file-extension}

3.2. 创建配置文件

bootstrap.yml/bootstrap.properties,而不是application.yml/application.properties,如果了解Springboot应该都知道,这bootstrap和application在项目启动中,加载顺序有先后的,bootstrap的优先级是高于application。

4. 添加依赖

因为Springboot最新2.1.X版本集成spring-cloud-alibaba-dependencies会有一些问题,所以SpringBoot版本需要降级到2.0.X,这也是个坑呀,折腾了好久。经过查阅一些资料,稳定版本的列表如下

Spring Cloud Version Spring Cloud Alibaba Version Spring Boot Version
Spring Cloud Greenwich 2.1.1.RELEASE 2.1.X.RELEASE
Spring Cloud Finchley 2.0.1.RELEASE 2.0.X.RELEASE
Spring Cloud Edgware 1.5.1.RELEASE 1.5.X.RELEASE

Spring Cloud Alibaba,包含了它所使用的所有依赖的版本。版本之间的依赖列表

  • Spring Cloud Greenwich

如果需要使用Spring Cloud Greenwich版本,在POM中的 添加


    com.alibaba.cloud
    spring-cloud-alibaba-dependencies
    2.1.1.RELEASE
    pom
    import

  • Spring Cloud Finchley

如果需要使用Spring Cloud Finchley版本,在POM中的 添加


    com.alibaba.cloud
    spring-cloud-alibaba-dependencies
    2.0.1.RELEASE
    pom
    import

  • Spring Cloud Edgware

如果需要使用Spring Cloud Edgware版本,在POM中的 添加


    com.alibaba.cloud
    spring-cloud-alibaba-dependencies
    1.5.1.RELEASE
    pom
    import

4.1. 父级依赖


    1.8
    2.0.4.RELEASE
    Finchley.RELEASE
    0.2.2.RELEASE



    
        
            org.springframework.cloud
            spring-cloud-dependencies
            ${spring-cloud.version}
            pom
            import
        
        
            org.springframework.boot
            spring-boot-dependencies
            ${spring-boot.version}
            pom
            import
        
        
            org.springframework.cloud
            spring-cloud-alibaba-dependencies
            ${nacos.version}
            pom
            import
        
    

4.2. 依赖


    org.springframework.cloud
    spring-cloud-starter-alibaba-nacos-config

5. resource文件

5.1. bootstrap.properties

由于bootstrap.properties在启动优先级高,所以将Nacos配置信息写这里。

spring.application.name=cofig-nacos
spring.profiles.active=dev
spring.cloud.nacos.config.group=CLOUD_GROUP
spring.cloud.nacos.config.server-addr=192.168.147.132:8848
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=yml
  • spring.cloud.nacos.config.server-addr:IP:PORT,生产环境这个应该是代理IP或者nacos的域名
  • spring.cloud.nacos.config.group:指定你设置的,默认为**
    DEFAULT_GROUP**

5.2. application.yml

server:
  port: 9002

# 6. mybatis配置
mybatis:
  mapperLocations: classpath:mapper/**/*.xml

7. 案例

为更好演示Nacos配置中心的效果,我这里将数据库配置都写在Nacos中,项目启动过程中自动获取配置中心的属性。

  • Nacos控制台配置

SpringCloud集成Nacos配置管理_第4张图片

spring: 
    datasource: 
        name: mysql
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
        username: root
        password: 123456
        druid:
            initial-size: 5
            min-idle: 5
            max-active: 20
            max-wait: 30000
            ##配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            time-between-eviction-runs-millis: 2000
            ## 配置一个连接在池中最小生存的时间,单位是毫秒
            min-evictable-idle-time-millis: 300000
            max-evictable-idle-time-millis: 600000
            remove-abandoned: true
            remove-abandoned-timeout: 180
            log-abandoned: false
            validation-query: select 1
            test-while-idle: true
            test-on-borrow: true
            test-on-return: true
            keep-alive: true
            phy-timeout-millis: 500
            pool-prepared-statements: false
            max-pool-prepared-statement-per-connection-size: 20
            connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=6000
page:
    pageNum: 0
    pageSize: 20
  • 启动类

@RefreshScope实现配置自动更新

@RefreshScope
@MapperScan(basePackages = {"xyz.wongs.weathertop.**.mapper"})
@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})
public class CloudConfigNacosApp {
    public static void main(String[] args) {
        SpringApplication.run(CloudConfigNacosApp.class,args);
    }

}

8. 7.Endpoint 信息查看

Springboot本身支持Endpoint,而Nacos Config同样也可以使用Endpoint来暴露信息。
在maven依赖中添加 spring-boot-starter-actuator依赖,并在配置中允许 Endpoints的访问。

  • Spring Boot 1.x 中添加配置 management.security.enabled=false
  • Spring Boot 2.x 中添加配置 management.endpoints.web.exposure.include=*
Spring Boot 1.x 可以通过访问 http://localhost:9001/nacos_config来查看Nacos Endpoint 的信息。

Spring Boot 2.x 可以通过访问http://localhost:9001/actuator/nacos-config来访问。

SpringCloud集成Nacos配置管理_第5张图片

9. 源码

Github演示源码 ,记得给Star

你可能感兴趣的:(容器化,云原生,博文,spring,cloud,mybatis,java)