微服务SpringCloud Alibaba ------(七)Nacos-config

1. Nacos配置中心使用

官方文档: https://qithub.com/alibaba/spring-cloud-alibaba/wiki/Nacos-confia
Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Config,您可以在Nacos Server集中管理你Spring Cloud应用的外部属性配置。

nacos-config支持:

  1. 环境拆分:通过namespace、group、DataId来区分不同项目不同环境下的配置文件
  2. 热更新:无需手动维护,1秒内自动更新配置

2. 权限控制

通过URL访问可视化界面在左侧菜单“权限控制”中进行操作,同时在nacos的conf文件夹下的application.properties中将nacos.core.auth.enabled修改为true

nacos.core.auth.enabled=true

2.1. 配置文件最佳实践

Namespace:代表不同环境,如:dev、test、prod。
Group:代表某项目,如XX医疗项目、XX电商项目
DataId:每个项目下往往有若干个工程(微服务),每个配置集(DataId)是一个工程(微服务)的主配置文件

3. Spring Cloud Alibaba 整合 Nacos-config

3.1. 第一步

添加依赖

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

3.2. 第二步

新建bootstrap.yml来配置

spring:
  application:
    # 会自动根据服务名拉取dataId对应的文件,如果dataId跟服务名不一致,那么需要手动指定
    # 默认文件,除了默认文件,其他文件必须写上后缀
    name: com.tulingmall.order.redis
  profiles:
    # 环境配置,在配置中心可以通过profile进行设置,只有默认的配置文件(spring.application.name)才能这么使用
    # 拉取到的文件为${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
    active: dev
  cloud:
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      # profile配置文件的优先级 > 默认配置文件优先级 > extension-configs(下标大的优先级高) > shared-configs(下标大的优先级高) 并且优先级大的会覆盖小的,形成互补
      config:
		#refresh-enabled: false #nacos客户端将无法感知配置文件的变化
        # nacos客户端默认读取properties文件拓展名,当读取非properties时需修改此配置
        # 只针对默认配置文件和profile配置文件
        file-extension: yaml
        namespace: public
        group: DEFAULT_GROUP
        shared-configs:
          - data-id: com.xxx.common.properties
            refresh: true
            #group: 默认是DEFAULT_GROUP
        extension-configs:
          - data-id: com.xxx.common.properties02
            refresh: true
            #group: 默认是DEFAULT_GROUP

3.3. 第三步

URL访问nacos可视化工具来创建相应的配置文件

4. 注意项

  1. profile配置文件的优先级 > 默认配置文件优先级 > extension-configs(下标大的优先级高) > shared-configs(下标大的优先级高) 并且优先级大的会覆盖小的,形成互补
  2. nacos开启认证后nacos配置文件中必须填写name和password
  3. 代码中实时获取配置中心的值
    @RestController
    @RequestMapping("/config")
    // 使用该注解来动态获取配置中心的值
    @RefreshScope
    public class ConfigController {
          
          
        @Value("${user.name}")
        private String name;
    
        @RequestMapping("/show")
        public String show(){
          
          
            return name;
        }
    }
    

猜你喜欢

转载自blog.csdn.net/qq_42017523/article/details/121494718