Nacos配置中心

最佳实践:


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

 

 

 

 

启动权限:修改application.properties

 

 

 

 

搭建nacos-config服务

 

读取下图 com.config.nacos.redis 配置文件信息

 

 

第一步:

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

 

第二部:添加bootstrap.properties


spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=user-service
spring.cloud.nacos.config.namespace=da085e59-fac2-4ca2-a488-feaf866f4857
# 开启动态刷新配置,否则配置文件修改,工程无法感知
spring.cloud.nacos.config.extension-configs[0].data-id=port.properties
spring.cloud.nacos.config.extension-configs[0].refresh=true
推荐
server.port=80 spring.application.name=user-service spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos spring.cloud.nacos.discovery.namespace=public spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/user?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false spring.datasource.username=root spring.datasource.password=123456 spring.redis.host=127.0.0.1 spring.redis.port=6379 mybatis-plus.mapper-locations=classpath:/mapper/**/*Mapper.xml mybatis-plus.configuration.map-underscore-to-camel-case=true
spring:
  application:
  # 会自动根据服务名拉取dataid对应的配置文件。  如果dataid跟服务名不一致 就需要手动指定dataid
  # 跟服务名相同的dataid的配置文件,称之为默认的配置文件
  # 除了默认的配置文件 ,其他配置文件必须写上后缀
    name: com.config.nacos.redis
  cloud:
    nacos:
      server-addr: 192.168.43.66:8848
      config:
        username: vnprd
        password: 123456
          # Nacos客户端 默认是Properties的文件扩展名 (只针对默认配置文件和profile)
          # 一旦修改成了非Properties格式,则必须通过file-extension进行设置
        file-extension: yaml
          #refresh-enabled: false   nacos客户端将无法感知配置的变化
        namespace: d67266fb-32f1-46fa-9c55-a79d5090c7a6        # 根据命名空间读取  此处不能使用 dev  要使用dev 对应的ID
        group: vn             # 根据group读取  默认Default-group
        shared-configs:
          - data-id: com.config.nacos.order.yaml  #[0]
            group: vn         #group:  默认是Default-group
            refresh: true
          - data-id: com.config.nacos.order.yaml #[1]
            refresh: true
        extension-configs[0]:
          data-id: com.config.nacos.order02.yaml
          group: vn           #group:  默认是Default-group
          refresh: true

# 配置文件的优先级(优先级大的会覆盖优先级小的, 并且会形成互补)
# profile()> 默认配置文件(默认配置文件:服务名称和配置文件Data ID名称相同)>extension-configs(下标越大优先级就越大)>shared-configs(下标越大优先级就越大)

 

 

第三步:spring-cloud-starter-alibaba-nacos-config 支持配置的动态更新,可以使用以下代码进行测试

package com.config.nacos;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.MutablePropertySources;
import org.springframework.core.env.PropertySource;

import java.util.concurrent.TimeUnit;

/**
 * @author vans on 2022/2/21 18:42
 */

@SpringBootApplication
@Slf4j
public class NacosConfigApplication {

    public static void main(String[] args) throws InterruptedException {
        ConfigurableApplicationContext applicationContext =
                SpringApplication.run(NacosConfigApplication.class, args);

        while (true){

            // 读取nacos配置中心信息
            // nacos客户端 每10ms去 注册中心进行判断,  根据 客户端MD5和服务的MD5 是否相等,相等就不读取配置信息,不相等就读取配置信息
            String name = applicationContext.getEnvironment().getProperty("name");

            log.info(name);

            TimeUnit.SECONDS.sleep(4);
        }
    }

}

 

posted @ 2022-02-21 21:17  VNone  阅读(402)  评论(0编辑  收藏  举报