vlambda博客
学习文章列表

基于Nacos构建分布式配置中心

1

分布式配置中心的作用

分布式配置中心可以实现不需要重启服务器,动态修改配置文件的内容

常见的配置中心:携程阿波罗、springCloud Config、nacos轻量级的配置中心等


2

基于nacos实现分布式配置中心

服务端

在nacos平台中创建配置文件

名称:(默认服务器名称)-版本.properties|yaml

客户端

maven依赖

基于Nacos构建分布式配置中心
<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>    <version>0.2.2.RELEASE</version></dependency>

配置文件

基于Nacos构建分布式配置中心

创建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

代码示例

基于Nacos构建分布式配置中心
@RestController@SpringBootApplication@RefreshScopepublic 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);    }}

注意事项

基于Nacos构建分布式配置中心

实现动态修改配置文件内容,必须在启动类上加上@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=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=truedb.user=rootdb.password=root

官网介绍:

https://nacos.io/zh-cn/docs/deployment.html