基于Nacos构建分布式配置中心
1
分布式配置中心的作用
分布式配置中心可以实现不需要重启服务器,动态修改配置文件的内容。
常见的配置中心:携程阿波罗、springCloud Config、nacos轻量级的配置中心等
2
基于nacos实现分布式配置中心
服务端
在nacos平台中创建配置文件
名称:(默认服务器名称)-版本.properties|yaml
客户端
+
maven依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
+
配置文件
创建bootstrap.yaml文件
spring:
application:
###服务的名称
name: app-member
cloud:
nacos:
discovery:
###nacos注册地址
server-addr: 127.0.0.1:8848
enabled: true
config:
###配置中心连接地址
server-addr: 127.0.0.1:8848
###分组
group: DEFAULT_GROUP
###类型
file-extension: yaml
+
代码示例
@RestController
@SpringBootApplication
@RefreshScope
public class NacosController {
@Value("${test.name}")
private String userName;
@RequestMapping("/getConfig")
public String getConfig() {
return userName;
}
public static void main(String[] args) {
SpringApplication.run(NacosController.class);
}
}
+
注意事项
实现动态修改配置文件内容,必须在启动类上加上@RefreshScope注解。
连接nacos分布式配置中心一定采用bootstrap形式优先加载,否则会报错。
bootstrap.yaml用于应用程序上下文的引导阶段。
application,yaml由父类ApringApplicationContext加载。
3
多版本控制
在nacos创建不用版本的配置文件
app-member-dev.yaml
app-member-prod.yaml
客户端指定读取版本
在bootstrap.yaml文件中指定版本
spring:
application:
###服务的名称
name: app-member
cloud:
nacos:
discovery:
###nacos注册地址
server-addr: 127.0.0.1:8848
enabled: true
config:
###配置中心连接地址
server-addr: 127.0.0.1:8848
###分组
group: DEFAULT_GROUP
###类型
file-extension: yaml
profiles:
active: dev
4
数据持久化
默认的情况下,分布式配置中心的数据存放到本地data目录下,如果实现nacos集群的话,无法保证数据的同步性。
在0.7版本之前,在单机模式时nacos使用嵌入式数据库实现数据的存储,不方便观察数据存储的情况。
0.7版本增加了只差mysql数据源能力。
+
操作步骤
1、安装数据库,版本要求:5.6.5+
2、初始化数据库,数据库初始化文件:nacos-mysql.sql
3、修改conf/application.properties文件,增加支持mysql数据源配置(目前只支持mysql),添加mysql数据源的url、用户名和密码。
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
官网介绍:
https://nacos.io/zh-cn/docs/deployment.html