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); } } }