Nacos作为配置中心

一、配置中心存的意义

1、微服务中配置文件的问题

image.png

配置文件的问题:

  • 配置文件的数量会随着服务的增加持续递增

  • 单个配置文件无法区分多个运行环境

  • 配置文件内容无法动态更新,需要重启服务

引入配置文件:刚才架构就会成为这样。是由配置中心统一管理

image.png

  • 统一配置文件管理

  • 提供统一标准接口,服务根据标准接口自行拉取配置

  • 支持动态更新的到所有服务

2、业界常用的配置中心

  • Appllo

    1. 统一管理不同环境、不同集群的配置

    2. 配置修改实时生效(热发布)

    3. 版本发布管理

    4. 灰度发布

    5. 权限管理、发布审核、操作审计

    6. 提供开放平台 API

  • Disconf

    是百度开源的框架,他是基于zk来实现配置变更后来实时通知和生效的。

  • SpringCloud Config

    他是springcloud自带的配置组件,他可以和spring进行无缝集成,spring自家研发的,使用起来很方便,配置存储是支持git ,不过他缺少可视化界面,并且配置的生效也不是实时的。需要重启,或者手动刷新的功能。

    • Nacos

二、Nacos安装以及编译

1、下载源码

image.png

解压进入目录中进行maven编译

mvn clean install -DskipTests -Drat.skip=true -f pom.xml

image.png

注意:编译的时候可能需要你自己指定jdk版本,可以修改maven配置文件conf/settings.xml

image.png

<profile>  
  <id>jdk-1.8</id>  
  <activation>  
      <activeByDefault>true</activeByDefault>  
      <jdk>1.8</jdk>  
  </activation>  
  <properties>  
      <maven.compiler.source>1.8</maven.compiler.source>  
      <maven.compiler.target>1.8</maven.compiler.target>  
      <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>  
  </properties>  
</profile> 

2、源码单机启动

  • 将jdk版本都设置为jdk8

  • 设置参数

 -Dnacos.standalone=true

3、单机启动服务

5、修改startup.cmd

将MODE模式改为standalone,这样下次直接双击startup.cmd就可以了

image.png

三、Nacos Config数据模型

Nacos Config数据模型

image.png

数据模型最佳实践

Namespace代表不同的运行环境:Dev/Test/Prod
Group代表某一类配置,比如中间件配置、数据库配置
Datald某个项目中具体的配置文

四、Nacos集成springboot实现统一配置管理

1、集成过程

  1. 增加依赖

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
  2. 开启注解

    没有注解

  3. 增加配置

    这里的配置是bootstrap.yaml(bootstrap.properties)

    bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等

    application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

    加载顺序bootstrap.yml > application.yml > application-dev(prod).yml

   spring.application.name=nacos-config
#nacos地址
spring.cloud.nacos.config.server-addr=localhost:8848

4、获取对应的属性

@RestController
public class NacosConfigController {
​
    @Value("${name}")
    private String name;
​
    @RequestMapping("/getName")
    public String getName(){
        return name;
    }
}

此时是可以获取到数据配置中心的数据的,但是他不能动态更新,为此我们可以加注解@RefreshScope

image.png

2、各种配置加载顺序

spring.application.name=nacos-config
​
server.port=8081
#nacos地址
spring.cloud.nacos.config.server-addr=localhost:8848
#1、只有上面的配置的时候他默认加载文件为:${application.name}
#2、指定文件后缀名称
#加载文件为:${application.name}.${file-extension}
#nacos-config.yaml
spring.cloud.nacos.config.file-extension=yaml
##3、profile: 指定环境  文件名:${application.name}-${profile}.${file-extension}
##nacos-config-prod.yaml
spring.profiles.active=prod
#4、nacos自己提供的环境隔离 ,这里是开发环境下的
spring.cloud.nacos.config.namespace=ff02931a-6fdb-4681-ac37-2f6d9a0596f8
​
#5、 自定义 group 配置,这里也可以设置为数据库配置组,中间件配置组,但是一般不用,
# 配置中心淡化了组的概念,使用默认值DEFAULT_GROUP
spring.cloud.nacos.config.group=DEFAULT_GROUP
#
#6、自定义Data Id的配置 共享配置(sharedConfigs)0
spring.cloud.nacos.config.shared-configs[0].data-id= common.yaml
#可以不配置,使用默认
spring.cloud.nacos.config.shared-configs[0].group=DEFAULT_GROUP
# 这里需要设置为true,动态可以刷新,默认为false
spring.cloud.nacos.config.shared-configs[0].refresh=true
​
# 7、扩展配置(extensionConfigs)
# 支持一个应用有多个DataId配置,mybatis.yaml datasource.yaml
spring.cloud.nacos.config.extension-configs[0].data-id=datasource.yaml
spring.cloud.nacos.config.extension-configs[0].group=DEFAULT_GROUP
spring.cloud.nacos.config.extension-configs[0].refresh=true
​
​
#作用:顺序
#${application.name}-${profile}.${file- extension}   msb-edu-prod.yaml
#${application.name}.${file-extension}   nacos-config.yaml
#${application.name}   nacos-config
#extensionConfigs  扩展配置文件
#sharedConfigs  多个微服务公共配置 redis
​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值