Nacos 配置中心初体验

Nacos 下载与初始化配置

本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases

Nacos 单机模式支持持久化配置到 MySQL 数据库,修改conf/application.properties配置:

1
2
3
4
5
6
7
spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://数据库地址:端口/数据库名?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=用户名
db.password=密码

然后在数据库执行conf/nacos-mysql.sql初始化数据库

Linux 环境下执行./bin/startup.sh启动 Nacos,Windows 环境下双击bin/startup.cmd启动 Nacos

Nacos 配置及在 Spring Cloud 中的使用

Nacos 可以根据三种模式区分不同环境下的配置:

    1. 根据Data Idprofiles(spring.profiles.active)
    1. 根据Group
    1. 根据Namespace(命名空间)

根据 Namespace 区分不同环境下的配置应该更适用于实际项目,本文以 Namespace 模式为例

新建命名空间

新增名字为dev的命名空间

新增配置

dev命名空间新增配置,Data Idservice1.ymlGrouptest,配置格式为YAML,内容为:

1
2
server:
port: 8070

在 Spring Cloud 中使用

添加依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<dependencies>
...

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

...
</dependencies>

<dependencyManagement>
<dependencies>
...

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

...
</dependencies>
</dependencyManagement>

spring-cloud-alibaba-dependencies是 Spring Cloud Alibaba BOM,包含了 Spring Cloud Alibaba 的所有依赖的版本,使用Nacos, Sentinel等时不用再指定版本

新建 Spring Cloud 项目,在bootstrap.yml新增配置:

1
2
3
4
5
6
7
8
9
10
11
spring:
application:
name: service1

cloud:
nacos:
config:
server-addr: 192.168.92.1:8848 # Nacos 地址与端口
namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba # 命名空间ID
group: test
file-extension: yml

启动项目,可以看到项目使用的端口为在 Nacos 中配置的 8070 说明配置生效

扩展配置

有时我们想要将配置放置在不同的文件或者多个项目共用部分配置,则可以添加扩展配置

在 Nacos 添加配置

dev命名空间新增配置,Data Idgreeting.ymlGroupcommon,配置格式为YAML,内容为:

1
greeting: Hello, world!

dev命名空间新增配置,Data Idauthor.ymlGroupcommon,配置格式为YAML,内容为:

1
author: Joe.Ye

Spring Cloud 配置

方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
spring:
application:
name: service1

cloud:
nacos:
config:
server-addr: 192.168.92.1:8848
namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba
group: test
file-extension: yml
extension-configs[0]:
data-id: greeting.yml
group: common
refresh: true # 配置修改后是否自动更新
extension-configs[1]:
data-id: author.yml
group: common
refresh: true

方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
spring:
application:
name: service1

cloud:
nacos:
config:
server-addr: 192.168.92.1:8848
namespace: e5fc372c-ad66-4e0e-a353-a217d0a315ba
group: test
file-extension: yml
extension-configs:
- data-id: greeting.yml
group: common
refresh: true
- data-id: author.yml
group: common
refresh: true

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@RefreshScope # 配置自动更新
@RestController
public class GreetingController {

@Value("${greeting:}")
private String greetingStr;
@Value("${author:}")
private String authorStr;

@RequestMapping("/greeting")
public String greeting() {
return greetingStr + " from " + authorStr;
}
}

访问:http://localhost:8070/greeting

Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2021 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :