Nacos配置中心
在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。
从Nacos中拉去配置文件
pom文件
2、bootstrap.yml
修改application.yml为bootstrap.yml
spring:
cloud:
nacos:
config:
server-addr: localhost:8848 #nacos服务地址
file-extension: yaml #拉取文件的后缀
applicantion:
name: server-config #服务名称
profiles:
active: dev #开发环境
从nacos拉取配置文件规则:
spring.application.name - {profile}.${file-extension:properties}
- a. spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
- b. spring.profile.active 即为当前环境对应的profile。注意:当spring.profile.active为空时,对应的连接符-也将不存在,dataId 的拼接格式变成 spring.application.name. {file-extension}
- c. file-exetension 为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持properties和yaml类型。
3、Controller读取配置文件内容
@RestController
@RequestMapping("/config")
public class ConfigController (
@Value("$(config.test}")
private string test; // 这个属性从nacos中拉取
@RequestMapping("/hello")
public string hello() {
return "config/hel1o -->+ test;
}
}
4、主启动类
@SpringBootApplication(scanBasePackages = "com.qf")
@EnableDiscoveryClient
public class ServerConfigApplication {
public static void main(string[] args) {
SpringApplication.run(ServerConfigApplication.class, args);
}
}
5、在Nacos中添加配置文件
Nacos配置动态刷新
在nacos配置中心修改配置文件内容可以实现实时刷新
@RestController
@RequestMapping("/config")
@Refreshscope // 修改配置文件后刷新就能看到
public class ConfigController (
@value("$(config.test)")
private String test;
@RequestMapping("/hello")
public string hello() {
return "config/hello -->" + test;
}
}
Nacos配置中心其它参数
1、DataId
在Nacos Spring Cloud中,dataId的完整格式如下:
${prefile}-${spring.profile.active}.${file-extension}
- prefix 默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。
- spring.profiles.active即为当前环境对应的profile,详情可以参考SpringBoot文档。注意:当spring.profiles.active为空时,对应的连接符-也将不存在,dataId的拼接格式变成 prefix.{file-extension}
- file-extension 为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持properties和yaml类型。
2.Group
同一项目,不同模块需要隔离,在Nacos上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
group: INFO_GROUP # 设置读取INFO GROUP组的配器文件
application:
name: server-config
profiles:
active: dev
3、Namespace
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的Group或DataID的配置。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。默认是有一个叫public的保留空间,不支持删除,比如开发、测试、生产环境可以创建三个namespace。
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
group: INFO GROUP # 组名
namespace: 059b8812-2a6e-4633-a19f-3165a8472b79 # namespace
application:
name: server-config
profiles:
active: dev
总的来说,namespace是可以用于区分部署环境的,Group和DataID逻辑上区分连个目标对象。
Nacos持久化
Nacos支持三种部署式
Nacos默认使用嵌入式数据库derby实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储存在一致性的问题。为了解决这个问题,Nacos采用集中式存储的方式来支持集群化部署,目前只支持mysql的存储。
1、创建nacos_config 数据库
在自己电脑上创建一个nacos_config数据库,运行nacos-mysql.sql中的脚本
2、修改nacos配置连接MYSQL数据库
spring.datasource.platform=mysg1
db .num=1
db.url.8=jdbc:mysql:/locahost:335/nacos Confip?characterIncoding-utF8camnetTimeut-180&socketTineout-300B&autoRecamnect-true
db .user=root
db .password=root