一、Nacos配置中心介绍
Nacos配置中心等同于Srping Cloud Config+Bus,并且配置信息基于自己搭建的项目,并且可以保存到Mysql数据库中
二、Nacos配置中心使用
2.1,Nacos管理首页->配置管理->配置列表
这里就是配置中心管理列表页面,所有的配置数据都在这里展示
image.png
2.2,Nacos数据中心数据模型
在真正使用Nacos数据中心前需要了解Nacos的数据模型:
命名 | 名称 | 使用方式 |
---|---|---|
Namespace | 不同环境进行隔离 | dev开发环境,fat测试环境,pro生产环境 |
Group | 将若干个服务或者配置归集为一组 | 一个项目一组,比如TC服务,TB服务,管理后台 |
Service | 对应某一个微服务 | TC服务拆分的微服务 |
DataId | 一个DataId对应一个配置文件,可以理解数据主键Id | 一个微服务对应一个/多个配置文件DataId |
2.3,Nacos配置中心使用
- 命名空间创建dev,fat,pro分别对应开发,测试,生产环境 image.png
- 在配置列表中选择对应的命名空间 image.png
- 创建配置文件并且分组 image.png
- 创建成功后就能在列表看到该条配置数据
2.4,获取配置中心数据开发
在Nacos服务提供者章节的基础上继续开发获取配置中心数据
- 开发前先了解dataId的完整格式
${prefix}-${spring.profile.active}.${file-extension}
名称 | 介绍 |
---|---|
prefix | 默认为spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置 |
spring.profile.active | 当前环境对应的profile,当该字段为空时,dataId会变成${prefix}.${file-extension},因为环境一般配置在Namespace,所以这个建议空 |
file-exetension | 后缀,可以通过配置项spring.cloud.nacos.config.file-extension 来配置 |
- sca-parent项目pom.xml
<!-- Nacos配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- sca-service-8081项目applicaion.yml改成bootstrap.yml
如果直接使用application.yml配置,会无法从配置中心获取配置参数
bootstrap.yml是由父Spring ApplicationContext加载,他会在application.yml加载前加载
bootstrap.yml一般是最早期配置文件,里面的参数一般是不会变动的
而变动的参数会通过application.yml进行米哦啊书
而nacos需要使用bootstrap.yml进行nacos相关的配置
server:
port: 8081 # 端口
spring:
application:
name: sca-service # 命名
# nacos配置
cloud:
nacos:
discovery:
# 集群中各节点信息都配置在这里(域名-VIP-绑定映射到各个实例的地址信息)
server-addr: 127.0.0.1:8848
# nacos配置中心获取配置设置
config:
# nacos配置中心IP端口,集群以,隔开
server-addr: 127.0.0.1:8848
# 命名空间里面的命名空间ID
namespace: 0520da30-154c-42e2-94d1-524e42203aa4
# group分组名称
group: DEFAULT_GROUP
# 后缀名,最终配置文件全称sca-service.yaml
file-extension: yaml
# 配置文件命名规则
prefix: sca-service
- HelloController.java编写一个类进行验证
@RestController
@RequestMapping("/sca")
@RefreshScope //动态刷新配置信息
public class HelloController {
@Value("${server.port8081}")
private Integer port;
@GetMapping("/hello/{name}")
public String hello(@PathVariable String name){
return name + "你好,欢迎来到"+port+"的Spring Cloud Alibaba";
}
}
网友评论