Nacos分布式配置中心
Nacos 概念
1、Nacos 作为服务注册中心及概念:https://blog.csdn.net/qq_36763419/article/details/121167710
2、 Spring Cloud Alibaba Nacos Config 官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html
Nacos 配置中心——基础配置
1、新建 cloud-alibaba-nacos-config-center-client3377
模块。
2、引入 pom 依赖
<!--Cloud Alibaba Nacos Config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--Cloud Alibaba Nacos Discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、写 yml 配置文件:bootstrap.yml
、application.yml
。
问题:为什么需要两个 yml 配置文件?
Nacos 和 SpringCloud Config 一样,在项目初始化时,要保证从配置中心进行配置拉取,拉取配置后才能保证项目正常启动。SpringBoot 中配置文件的加载是存在优先级顺序的:bootstrap 优先级高于 application 。
(1)bootstrap.yml
server:
port: 3377
spring:
application:
name: nacos-config-center-client
cloud:
nacos:
# 服务注册
discovery:
server-addr: localhsot:8848 # 服务注册中心地址
# 服务配置
config:
server-addr: localhost:8848 # 服务配置中心地址
file-extension: yaml # 指定 yaml 格式的配置
group: config-group1
(2)application.yml
spring:
profiles:
active: dev #表示开发环境
3、主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigCenterClientMain3377 {
public static void main(String[] args) {
SpringApplication.run(NacosConfigCenterClientMain3377.class, args);
}
}
4、controller 类
@RestController
@Slf4j
@RefreshScope
public class NacosConfigController {
@Value(value = "${config.info}")
private String configInfo;
@GetMapping(value = "/nacos/config/getInfo")
public String getConfigInfo() {
return configInfo;
}
}
5、启动 Nacos 并访问:http://localhost:8848/nacos,并配置 配置信息
。
(1)配置信息:
(2)解析:
Data Id
配置公式:${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
1、
${spring.application.name}
微服务名称
2、${spring.profile.active}
当前配置环境对应的配置文件 profile
3、${spring.cloud.nacos.config.file-extension}
指定配置文件格式,即文件后缀名
Group
配置公式:${spring.cloud.nacos.config.group}
6、测试及启动步骤
(1)启动 nacos ,并在配置管理中配置好对应环境的配置信息。
(2)启动客户端,如果客户端没有报错,并能够获取到配置信息则表示配置成功。
Nacos 配置中心——分类配置
一、问题:
为什么要分类配置?多环境多项目管理。
1、在实际的开发中,通常一个系统会准备dev、test、prod
等环境,如何保证指定环境启动时服务能正确读取到 Nacos 上响应的配置文件呢?
2、一个大型的分布式微服务系统会有很多微服务子项目,每个微服务项目有都会有相应的 dev、test、prod 等环境。那怎么对这些微服务配置镜像管理呢?
二、问题:Namespace + Group + Data Id 三者是什么关系?为什么要这样设计?
1、类似 Java 中的 Package 包名 和 Class 类名。最外层的Namespace (默认:public)
是可以用于区分部署环境,Group(默认:DEFAULT_GROUP)
和 Data Id 逻辑上区分两个目标对象。
Data Id 方案
在默认的 namespace
和 默认的 group
的条件下,通过修改 spring.profiles.active
属性就能进行多环境下配置文件的获取。即通过修改 spring.profiles.active 属性就能获取不同环境(dev、test、prod等
)的配置信息。
Group 方案
在默认namespace、不同分组、相同的 Data Id
的情况下(建立DEV_GROUP、TEST_GROUP两个分组,spring.profiles.active 属性值相同),通过修改分组,能够获取相同Data Id 的配置文件信息。例如:负载均衡的微服务。
Namespace 方案
通过 Namespace、Group、Data Id 确定完整的配置获取路径
。配置步骤如下:
1、新建命名空间
2、点击配置列表,发现出现 public 和 新建的哪两个命名空间
3、可以通过修改 bootstrap.yml
配置(namespace、group、spring.profiles.active)来获取配置文件信息。
Nacos 集群与持久化(重要)
Nacos 安装、集群部署和持久化配置:https://blog.csdn.net/qq_36763419/article/details/121179174