我正在参加「启航计划」
SpringCloud之Nacos作为装备中心
nacos作为注册中心
nacos作为注册中心请参阅
Nacos作为装备中心
1、引进依靠
<dependencies>
<!--nacos-config-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos-discovery-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--web + actuator-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
YML的类别
-
Nacos
同springcloud-config
一样,在项目初始化时,要保证先从装备中心进行装备拉取,拉取装备之后,才能保证项目的正常发动。 ` -
springboot
中装备文件的加载是存在优先级顺序的,bootstrap
优先级高于application
留意点 在Cloud高版别中(例如:2021.0.3),你可能还需求引进以下依靠
<!-- bootstrap 发动器:处理Cloud高版别下不先加载bootstrap.properties问题
see github issue:https://github.com/alibaba/spring-cloud-alibaba/issues/1994
-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
2、装备Bootstrap.yml
# nacos装备
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为装备中心地址
file-extension: yaml #指定yaml格局的装备
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
同享装备 & 多装备文件
spring:
application:
name: nacos-config-multi
main:
allow-bean-definition-overriding: true
cloud:
nacos:
username: ${nacos.username}
password: ${nacos.password}
config:
server-addr: ${nacos.server-addr}
namespace: ${nacos.namespace}
# 用于同享的装备文件
shared-configs:
- data-id: common-mysql.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
- data-id: common-redis.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
- data-id: common-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
# 常规装备文件
# 优先级大于 shared-configs,在 shared-configs 之后加载
extension-configs:
- data-id: nacos-config-advanced.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
- data-id: nacos-config-base.yaml
group: SPRING_CLOUD_EXAMPLE_GROUP
refresh: true
3、装备application.yml
spring:
profiles:
active: dev # 表明开发环境
4、Controller测验接口
/**
* 装备客户端控制器
*
* @author LiJunYi
* @RefreshScope 支撑Nacos的动态刷新功能
*/
@RestController
@RefreshScope
public class ConfigClientController
{
@Value("${config.info}")
private String configInfo;
@GetMapping("/config/info")
public String getConfigInfo() {
return configInfo;
}
}
在Nacos中增加装备信息
匹配规则-理论
- 官方文档
- 之所以需求装备
spring.application.name
,是因为它是构成Nacos
装备管理dataId
字段的一部分。
dataId的完好格局
${prefix}-${spring.profile.active}.${file-extension}
-
1、
prefix
默以为spring.application.name
的值,也能够经过装备项spring.cloud.nacos.config.prefix
来装备。 -
2、
spring.profile.active
即为当前环境对应的profile
。留意:当spring.profile.active
为空时,对应的连接符–
也将不存在datald
的拼接格局变成${prefix}.${file-extension}
-
3、
file-exetension
为装备内容的数据格局, 能够经过装备项spring.cloud .nacos.config.file-extension
来装备。 目前只支撑properties
和yaml
类型。
最终公式:
$(spring.application.name}-$(spring.profiles.active}.$spring.cloud.nacos.config.file-extension}
装备新增
- 图解
Namespace+Group+DatalD讲解
三者关系
类似Java里边的 package
名和类名, 最外层的 namespace
是能够用于区别部署环境的,Group
和 DataID
逻辑上区别两个方针对象。
三者状况
- 默许状况:
Namespace
= public
,Group
= DEFAULT_GROUP
,默许Cluster
是 DEFAULT
-
Nacos
默许的命名空间是public
,Namespace
主要用来实现隔离。
比方说我们现在有三个环境:开发、测验、生产环境,我们就能够创建三个Namespace
,不同的Namespace
之间是隔离的。
-
Group
默许是DEFAULT_GROUP
,Group
能够把不同的微服务划分到同一个分组里边去 -
Sevice
便是微服务;一个Service
能够包含多个Cluster(集群)
,Nacos
默许Cluster
是DEFAULT
,Cluster
是对指定微服务的一个虚拟划分。
比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就能够给杭州机房的 Service微服务起一个集群称号(Hz),给广州机房的Service微服务起一个集群称号(GZ), 还能够尽量让同一个机房的微服务相互调用,以提高功能。
- 最终是
Instance
,便是微服务的实例。
实例-三种方案加载装备
1、dataId方案
-
指定
spring.profile.active
和装备文件的DatalD
来使不同环境下读取不同的装备 -
默许空间+默许分组+新建
dev
和test
两个Datald
-
经过
spring.profile.active
属性就能进行多环境下装备文件的读取
新建两个不同的装备
- YML
2、Group方案
- Nacos装备概况
- YML
3、Namespace方案
- Nacos新增命名空间
- bootstrao.yml
# nacos装备
server:
port: 3377
spring:
application:
name: nacos-config-client
cloud:
nacos:
discovery:
server-addr: localhost:8848 #Nacos服务注册中心地址
config:
server-addr: localhost:8848 #Nacos作为装备中心地址
file-extension: yaml #指定yaml格局的装备
group: TEST_GROUP
namespace: ea7be215-37d0-4175-958c-a8af3545f115
Nacos作为装备中心的内容主要便是这些,更多具体知识点能够查阅官方文档哦。
下一章节
Nacos集群与持久化