建设网站的技术风险,新春祝福图片在线制作,网站制作简单模版,高级网站开发工程师证书前言 本文小新为大家带来 微服务组件Nacos配置中心 相关知识#xff0c;具体内容包括Nacos Config快速开始指引#xff0c;搭建nacos-config服务#xff0c;Config相关配置#xff0c;配置的优先级#xff0c;RefreshScope注解等进行详尽介绍~
不积跬步#xff0c;无以至…前言 本文小新为大家带来 微服务组件Nacos配置中心 相关知识具体内容包括Nacos Config快速开始指引搭建nacos-config服务Config相关配置配置的优先级RefreshScope注解等进行详尽介绍~
不积跬步无以至千里不积小流无以成江海。每天进步一点点在成为强者的路上小新与大家共同成长
博主主页小新要变强 的主页 Java全栈学习路线可参考【Java全栈学习路线】最全的Java学习路线及知识清单Java自学方向指引内含最全Java全栈学习技术清单~ 算法刷题路线可参考算法刷题路线总结与相关资料分享内含最详尽的算法刷题路线指南及相关资料分享~ Java微服务开源项目可参考企业级Java微服务开源项目开源框架用于学习、毕设、公司项目、私活等减少开发工作让您只关注业务
↩️本文上接Spring Cloud Alibaba全家桶四——微服务调用组件Feign 目录 文章标题前言目录一、Nacos Config快速开始二、搭建nacos-config服务三、Config相关配置四、配置的优先级五、RefreshScope后记Nacos配置中心官方文档 https://github.com/alibaba/springcloudalibaba/wiki/Nacosconfig
Nacos 提供用于存储配置和其他元数据的 key/value 存储为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。 springcloud config 对比 三大优势
springcloud config大部分场景结合git 使用, 动态变更还需要依赖Spring Cloud Bus消息总线来通过所有的客户端变化springcloud config不提供可视化界面nacos config使用长轮询更新配置, 一旦配置有变动后通知Provider的过程非常的迅速, 从速度上秒杀springcloud原来的config几条街。 一、Nacos Config快速开始
1准备配置nacos server中新建nacosconfig.properties 最佳实践
Namespace代表不同环境如开发、测试、生产环境。Group代表某项目如XX医疗项目、XX电商项目DataId每个项目下往往有若干个工程微服务每个配置集(DataId)是一个工程微服务的主配置文件 2启动权限修改application.properties 二、搭建nacos-config服务
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。
1引入依赖
1 dependency
2 groupIdcom.alibaba.cloud/groupId
3 artifactIdspring‐cloud‐starter‐alibaba‐nacos‐config/artifactId
4 /dependency
2添加bootstrap.properties
1 spring.application.namenacos‐config
2 # 配置中心地址
3 spring.cloud.nacos.config.server‐addr127.0.0.1:8848
4
5 # dataid 为 yaml 的文件扩展名配置方式
6 # ${spring.application.name}.${file‐extension:properties}
7 spring.cloud.nacos.config.file‐extensionyaml
8 #profile粒度的配置 ${spring.application.name}‐${profile}.${file‐extension:properties} 9 spring.profiles.activeprod3启动服务测试微服务是否使用配置中心的配置
SpringBootApplication
public class NacosConfigApplication {public static void main(String[] args) {ConfigurableApplicationContext applicationContext SpringApplication.run(NacosConfigApplication.class, args); String userName applicationContext.getEnvironment().getProperty(common.name);String userAge applicationContext.getEnvironment().getProperty(common.age); System.out.println(common name :userName; age: userAge);}
} 三、Config相关配置
Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串公共命名空间public分组默认是 DEFAULT_GROUP
1支持配置的动态更新
SpringBootApplication
public class NacosConfigApplication {public static void main(String[] args) throws InterruptedException {ConfigurableApplicationContext applicationContext SpringApplication.run(NacosConfigApplication.class, args);while(true) {//当动态配置刷新时会更新到 Enviroment中因此这里每隔一秒中从Enviroment中获取配置String userName applicationContext.getEnvironment().getProperty(common.name);String userAge applicationContext.getEnvironment().getProperty(common.age);System.err.println(common name : userName ; age: userAge); TimeUnit.SECONDS.sleep(1);}}
}ps除了默认的配置文件 其他dataId都要加上后缀
2支持profile粒度的配置
springcloudstarteralibabanacosconfig 在加载配置的时候不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties} 为前缀的基础配置还加载了dataid为 ${spring.application.name}-${profile}.${file-extension:properties} 的基础配置。在日常开发中如果遇到多套环境下的不同配置可以通过Spring 提供的 ${spring.profiles.active} 这个配置项来配置。
spring.profiles.activedevprofile 的配置文件 大于 默认配置的文件 并且形成互补。
ps只有默认的配置文件 才会应用profile。
3支持自定义 namespace 的配置
用于进行租户粒度的配置隔离。不同的命名空间下可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离例如开发测试环境和生产环境的资源如配置、服务隔离等。
在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下 默认使用的是 Nacos 上 Public 这个 namespace。如果需要使用自定义的命名空间可以通过以下配置来实现
spring.cloud.nacos.config.namespace71bb9785‐231f‐4eca‐b4dc‐6be446e12ff84支持自定义 Group 的配置
Group是组织配置的维度之一。通过一个有意义的字符串如 Buy 或 Trade 对配置集进行分组从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时如果未填写配置分组的名称则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景不同的应用或组件使用了相同的配置类型如 database_url 配置和 MQ_topic 配置。在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下默认是DEFAULT_GROUP 。如果需要自定义自己的 Group可以通过以下配置来实现
spring.cloud.nacos.config.groupDEVELOP_GROUP5支持自定义扩展的 Data Id 配置
Data ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包如 com.taobao.tc.refund.log.level的命名规则保证全局唯一性。此命名规则非强制。通过自定义扩展的 Data Id 配置既可以解决多个应用间配置共享的问题又可以支持一个应用有多个配置文件。
# 自定义 Data Id 的配置
# 不同工程的通用配置 支持共享的 DataId
spring.cloud.nacos.config.sharedConfigs[0].data‐id common.yaml
spring.cloud.nacos.config.sharedConfigs[0].groupREFRESH_GROUP
spring.cloud.nacos.config.sharedConfigs[0].refreshtrue# config external configuration
# 支持一个应用多个 DataId 的配置 一定要加扩展名
spring.cloud.nacos.config.extensionConfigs[0].data‐idext‐config‐common01.properties
spring.cloud.nacos.config.extensionConfigs[0].groupREFRESH_GROUP
spring.cloud.nacos.config.extensionConfigs[0].refreshtruespring.cloud.nacos.config.extensionConfigs[1].data‐idext‐config‐common02.properties
spring.cloud.nacos.config.extensionConfigs[1].groupREFRESH_GROUP
spring.cloud.nacos.config.extensionConfigs[1].refreshtrue四、配置的优先级
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置
A: 通过 spring.cloud.nacos.config.shared-configs 支持多个共享 Data Id 的配置B: 通过 spring.cloud.nacos.config.ext-config[n].data-id 的方式支持多个扩展 Data Id 的配置C: 通过内部相关规则(应用名、应用名 Profile )自动生成相关的 Data Id 配置当三种方式共同使用时他们的一个优先级关系是:A B C 优先级从高到低 nacosconfigproduct.yaml 精准配置 nacosconfig.yaml 同工程不同环境的通用配置 extconfig: 不同工程 扩展配置 shareddataids 不同工程通用配置
五、RefreshScope
Value注解可以获取到配置中心的值但是无法动态感知修改后的值需要利用RefreshScope注解。
RestController
RefreshScope
public class TestController{Value(${common.age})private String age;GetMapping(/common)public String hello() {return age;}
} 后记 Java全栈学习路线可参考【Java全栈学习路线】最全的Java学习路线及知识清单Java自学方向指引内含最全Java全栈学习技术清单~ 算法刷题路线可参考算法刷题路线总结与相关资料分享内含最详尽的算法刷题路线指南及相关资料分享~