Nacos 配置中心初体验
Nacos 下载与初始化配置
本文使用1.2.0,下载地址:https://github.com/alibaba/nacos/releases
Nacos 单机模式支持持久化配置到 MySQL 数据库,修改conf/application.properties
配置:
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 可以根据三种模式区分不同环境下的配置:
-
- 根据
Data Id
和profiles
(spring.profiles.active
)
- 根据
-
- 根据
Group
- 根据
-
- 根据
Namespace
(命名空间)
- 根据
根据 Namespace 区分不同环境下的配置应该更适用于实际项目,本文以 Namespace 模式为例
新建命名空间
新增名字为dev
的命名空间
新增配置
在dev
命名空间新增配置,Data Id
为service1.yml
,Group
为test
,配置格式为YAML
,内容为:
server:
port: 8070
在 Spring Cloud 中使用
添加依赖:
<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
新增配置:
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 Id
为greeting.yml
,Group
为common
,配置格式为YAML
,内容为:
greeting: Hello, world!
在dev
命名空间新增配置,Data Id
为author.yml
,Group
为common
,配置格式为YAML
,内容为:
author: Joe.Ye
Spring Cloud 配置
方法一:
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
方法二:
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
测试
@RefreshScope # 配置自动更新
@RestController
public class GreetingController {
@Value("${greeting:}")
private String greetingStr;
@Value("${author:}")
private String authorStr;
@RequestMapping("/greeting")
public String greeting() {
return greetingStr + " from " + authorStr;
}
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/24/initial-experience-of-nacos-configuration-center/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论