SpringCloudAlibaba-Nacos
参考文献
- 黑马讲义
Nacos
-服务发现以及配置中心
什么是配置
- 配置主要有以下几个特点:
- 配置独立于程序的只读变量
- 配置对于程序是只读的,程序通过读取配置来改变自己的行为,但是程序不应该去改变配置
- 配置伴随应用的整个生命周期
- 配置贯穿于应用的整个生命周期,应用在启动通过读取配置来初始化,在运行时根据配置调整行为.
- 比如启动时需要读取服务的端口号,系统在运行过程中需要读取定时策略执行定时任务等.
- 配置贯穿于应用的整个生命周期,应用在启动通过读取配置来初始化,在运行时根据配置调整行为.
- 配置可以有多种加载方式
- 常见的有程序的硬编码,配置文件,环境变量,启动参数,基于数据库等
- 配置需要治理
- 同一份程序在不同环境(开发,测试,生产),不同集群(如不同的数据中心)经常需要有不同的配置,所以需要有完善的环境,集群配置管理
- 配置独立于程序的只读变量
什么是配置中心
- 配置中心的服务流程如下:
- 用户在配置中心更新配置信息
- 服务A和服务B及时得到配置更新通知,从配置中心获取配置
- 总得来说,配置中心就是一种统一管理各种应用配置的基础服务组件
- 在传统巨型单体应用纷纷转向细粒度微服务架构的历史进程中,配置中心是微服务化不可缺少的一个系统组件,在这种背景下中心化的配置服务即配置中心应运而生,一个合格的配置中心需要满足如下特性:
- 配置项容易读取和修改
- 分布式环境应用配置的可管理性,即提供远程管理配置的能力
- 支持对配置的修改和监视以把控风险
- 可以产看配置修改的历史记录
- 不同部署环境下应用配置的隔离性
Nacos
数据模型
-
Nacos
数据模型Key
由三元组唯一确定,Namespace
默认是空串,公共命名空间(public
),分组默认是DEFAULT_GROUP
. -
DataId
细节-
代表完整配置文件名称:
spring.cloud.nacos.config.name
-
完整配置文件名称:
perfix
(前缀)+env
(环境)+file-extension
(后缀)1
2
3dataId = spring.cloud.nacos.config.name + spring.cloud.nacos.config.file-extension
dataId = ${prefix}-${spring.profiles.active}.${file-extension}
-
配置的优先级
-
Spring Cloud Alibaba Nacos Config
目前提供了三种配置能力从Nacos
拉取相关的配置.-
A: 通过
spring.cloud.nacos.config.shared-configs
支持多个共享Data Id
的配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15spring:
cloud:
nacos:
config:
enabled: true
server-addr: ${NACOS_ADDRESS}
namespace: xxxx
file-extension: yaml
username: xxxx
password: xxxx
context-path: /nacos
shared-configs:
- data-id: xxx-base-config.yaml
group: DEFAULT_GROUP
refresh: true -
B: 通过
spring.cloud.nacos.config.extension-configs
支持多个共享Data Id
的配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18spring:
cloud:
nacos:
config:
enabled: true
server-addr: ${NACOS_ADDRESS}
namespace: xxxx
file-extension: yaml
username: xxxx
password: xxxx
context-path: /nacos
extension-configs:
- data-id: xxx-base-config.yaml
group: DEFAULT_GROUP
refresh: true
- data-id: xxx-base-config2.yaml
group: TEST_GROUP
refresh: true- 多个
Data Id
同时配置时,spring.cloud.nacos.config.extension-configs[n].data-id
其中n
的值越大,优先级越高.
- 多个
-
C: 通过内部相关规则(应用名,扩展名)自动生成相关的
Data Id
配置
-
-
当三种方式共同使用时,他们的一个优先级关系是: C > B > A
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 HoleLin's Blog!