Nacos 的基本应用(Spring Cloud)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nacos 的基本应用(Spring Cloud)相关的知识,希望对你有一定的参考价值。
参考技术A 创建一个 controller 类可以看到拿到的是配置中心中的地址,如果改变了配置中心的值,不需要重启服务,不需要重新修改配置,返回值也会随之改变
https://github.com/alibaba/nacos/blob/master/distribution/conf/nacos-mysql.sql
pom 引入依赖
创建公共接口
pom 依赖,引入 nacos,dubbo,springboot,api 子工程依赖
@Service 注解是 dubbo 的注解
启动类
nacos 的配置要配置在 bootstrap.yml 中
pom 依赖,引入 nacos,dubbo,springboot,api 子工程依赖
加上注解 @RefreshScope 表示该类要动态刷新
@Reference 是 dubbo 注解
@Value("$userName") 中的 userName 是配置在 nacos 中的
启动类
nacos 的配置要配置在 bootstrap.yml 中
http://localhost:8082/userInfo
可以看到 nacos 中的配置信息被拿到了
nacos 默认会使用 spring.application.name 的值称作为 Data Id,也就是默认会找 spring.spplicaiotn.name 对应的配置信息,默认是找 .properties 类型,可以通过 file-extension 来之定加载的配置类型
prefix 默认为 spring.application.name 的值,可以通过配置项 spring.cloud.nacos.config.prefix 来配置
spring.profiles.active 为当前环境对应的 profile
当 spring.profiles.active 为空,dataId 的拼接格式变成 prefix . file-extension
当 spring.profiles.active 不为空,没找到 prefix - spring.profiles.active . file-extension,会找 prefix . file-extension,file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置
此时 nacos 回去找 nacos-dubbo-cousumer-dev.yml 配置
此时会从新建的 namespace 中拿去配置
此时会读取 order 跟组里的配置
共享配置是指在同一个 namespace 下,有多个应用需要应用相同的配置,我们就可以定义共享配置
1Nacos 配置中心源码解析之 集成 Spring Cloud
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
1、基本架构及概念
Nacos 支持服务发现与服务的配置管理,这里我们只是来讨论 Nacos 作为配置中心。
命名空间
用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
配置 (Configuration)
在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。
配置管理 (Configuration Management)
在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。
配置项
一个具体的可配置的参数与其值域,通常以 param-key=param-value 的形式存在。例如我们常配置系统的日志输出级别(logLevel=INFO|WARN|ERROR) 就是一个配置项。
配置集
一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级别等配置项。
配置集 ID
Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。
配置分组
Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置。
配置快照
Nacos 的客户端 SDK 会在本地生成配置的快照。当客户端无法连接到 Nacos Server 时,可以使用配置快照显示系统的整体容灾能力。配置快照类似于 Git 中的本地 commit,也类似于缓存,会在适当的时机更新,但是并没有缓存过期(expiration)的概念。
2、启动 Nacos 服务
从 最新稳定版本 下载 nacos-server-$version.zip 包。
2.1 下载编译后压缩包
unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
2.2 启动服务器
sh startup.sh -m standalone
2.3 控制台
启动成功之后,访问:http://localhost:8848/nacos 。然后使用用户名/密码(nacos/nacos) 进行登陆。
3、Nacos 与 Spring Cloud 集成
项目结构如下图所示:
3.1 添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
更多版本对应关系参考:版本说明 Wiki
3.2 bootstrap.properties
在 bootstrap.properties
中配置 Nacos server 的地址和应用名
bootstrap.properties
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=example
说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
p r e f i x − {prefix}- prefix−{spring.profiles.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profiles.active
即为当前环境对应的profile
,详情可以参考 Spring Boot文档。 注意:当spring.profiles.active
为空时,对应的连接符-
也将不存在,dataId
的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
3.3 ConfigController.java
通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新:
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
3.4 测试
启动 Nacos 与 Spring Cloud 集成的 web 服务:通过 postman 访问:http://localhost:8080/config/get
这个路径。
然后通过控制台修改 Data Id
为 example
,Group
为 DEFAULT_GROUP
的配置,把
useLocalCache=true
修改为 useLocalCache=false
并发发布。不需要重启 Nacos 与 Spring Cloud 的集成项目,我们重新访问上面的地址:
-
参考地址:
-
https://nacos.io/zh-cn/docs/what-is-nacos.html
-
https://nacos.io/zh-cn/docs/concepts.html
-
https://nacos.io/zh-cn/docs/architecture.html
-
https://nacos.io/zh-cn/docs/quick-start.html
-
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
以上是关于Nacos 的基本应用(Spring Cloud)的主要内容,如果未能解决你的问题,请参考以下文章
1Nacos 配置中心源码解析之 集成 Spring Cloud
Spring Cloud笔记03: 服务注册和服务发现的基本概念
Spring Cloud Alibaba - 04 Nacos 领域模型划分