本系列带着大家深入微服务 Spring体系的各个框架的基本使用以及底层原理。上一篇文章介绍了Nacos的核心概念以及客户端实现服务发现的功能,本节将带着大家学习下Nacos Config核心概念以及实战
分布式配置中心可以集中管理程序配置以及实现不重启服务容器,动态修改程序的配置内容,市面上的分布式配置中心有携程的Apollo,SpringCloud Config,Nacos Config 配置中心。
Nacos 配置管理一致性分为两部分,第一部分是Server间一致性协议(Nacos Server集群环境),一个是SDK(Nacos Config Client)与Server的一致性协议,配置作为分布式系统中飞强一致性数据,在出现脑裂的时候高可用性高于一致性,因此配置中心采用的是AP一致性协议
需实现效果:通过Nacos实现配置的动态变更
1、启动Nacos Server
2、nacos server中新建serviceA-dev.yaml
3、搭建Nacos Config 服务
3.1) 引入Nacos Client依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>
3.2) 添加bootstrap.yaml
spring:
profiles:
active: dev #指定环境
application:
name: serviceA # 服务名称
cloud:
nacos:
config:
server-addr: nacos:8848
file-extension: yaml
username: nacos
password: nacos
3.3) 添加启动类,测试功能
@SpringBootApplication
public class NacosConfigApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosConfigApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userAge = applicationContext.getEnvironment().getProperty("user.age");
System.out.println("my name is :"+userName+"; age: "+userAge);
}
}
spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 ${spring.application.name}.${file-extension:properties}
为前缀的基础配置,还加载了dataid为 ${spring.application.name}-${profile}.${file-extension:properties}
的基础配置,
可以通过Spring 提供的 ${spring.profiles.active}
这个配置项来配置,实现读取不同的环境
spring:
profiles:
active: dev #指定环境
Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
在没有明确指定 ${spring.cloud.nacos.config.namespace}
配置的情况下, 默认使用的是 Nacos 上 public
这个namespae。如果需要使用自定义的命名空间,可以通过以下配置来实现:
namespace 对应的是命名空间的id
spring:
cloud:
nacos:
config:
namespace: xxx # 命名空间ID
在没有明确指定 ${spring.cloud.nacos.config.group}
配置的情况下, 默认使用的是 DEFAULT_GROUP
。如果需要自定义自己的 Group,可以通过以下配置来实现:
spring:
cloud:
nacos:
config:
group: DEV_GROUP
共享配置 解决多个应用间配置共享的问题
spring:
cloud:
nacos:
config:
shared-configs:
- data-id: shared-configs.yml
refresh: true
支持自定义 Data Id 的配置
spring:
cloud:
nacos:
config:
extension-configs:
- data-id: shared-configs.yml
refresh: true
Nacos 基础篇差不多更新完了,后面会给大家带来Nacos 源码解析部分,感谢支持