Ezio's Blog
Posts Categories Tags Music Mood About
Ezio's Blog· Light
☰ Menu
Posts Categories Tags Music Mood About
Expand all Back to top Go to bottom

Nacos

Author: Ezio Date: May 21, 2022  10:52:20 Category: Spring Cloud

使用 nacos 作为注册中心:

1.在父项目的maven配置文件中加入alibaba依赖:

1
2
3
4
5
6
7
8
<!-- nacos的管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>

2.在客户端服务的maven配置文件中加入client依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!-- nacos客户端依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!-- 升级nacos2.x后cloud-alibaba包需要排除nacos-client -->
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 通过指定nacos-client方式,提前使用Nacos2.0长连接功能 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.1.0</version>
</dependency>

3.客户端配置文件application.yml配置服务地址和名称

1
2
3
4
5
6
7
8
spring:
application:
name: userservice # 服务名称
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址

nacos 服务器多级存储模型-集群配置

在客户端的配置文件中配置:

1
2
3
4
5
6
7
8
9
10
spring:
application:
name: userservice # 服务名称
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848 # nacos
discovery:
cluster-name: CQ # 集群名称

nacos的负载均衡

在服务的调用者也就是消费方的配置文件中配置:

1
2
3
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则

nacos服务器权重配置

可以在nacos的控制台,实例列表中进行编辑,修改权重配置。配置权重为0时则不被访问。


nacos 环境隔离

1.首先在nacos控制台的命名空间中新建一个命名空间,用来隔离环境。可以手动或自动生成命名空间的ID。

2.然后在客户端的配置中添加配置,设置命名空间。

1
2
3
4
5
6
7
8
9
10
11
spring:
application:
name: userservice # 服务名称
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848 # nacos
discovery:
cluster-name: CQ # 集群名称
namespace: 4d6ce343-9e1b-44df-a90f-2cf2b6b3d177 # dev环境的ID
  • namespace用来做环境隔离
  • 每个namespace都有一个唯一ID
  • 不同namespace的服务不可见。

nacos 实现配置中心

1.在nacos控制台中添加对应环境的配置文件。配置文件的DataId命名格式为:${prefix}-${spring.profile.active}.${file-extension},如userservice-dev.yaml

2.引入nacos配置中心依赖

1
2
3
4
5
6
7
8
9
10
11
<!-- nacos的配置管理依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>

3.在服务的resource目录下创建bootstrap.yml文件,该文件为引导文件,优先级高于application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
application:
name: userservice
profiles:
active: dev
cloud:
nacos:
server-addr: localhost:8848 # nacos
discovery:
cluster-name: CQ # 集群名称
namespace: 4d6ce343-9e1b-44df-a90f-2cf2b6b3d177 # dev环境的ID
config:
file-extension: yaml # 配置文件后缀

服务端获取配置并实现热更新

1.可通过@Value({配置名})注解获取配置,并在该变量所在的类上添加@RefreshScope注解,实现配置热更新

1
2
3
4
5
6
7
8
9
10
11
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {

@Autowired
private UserService userService;

@Value("${pattern.dateformat}")
private String dateformat;

2.可通过@ConfigurationProperties实现配置获取和热更新。

1
2
3
4
5
6
7
8
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateformat;
private String envSharedValue;
private String name;
}

多环境配置

1.在nacos控制台中添加配置文件。名称为${prefix}.${file-extension}去掉环境。如userservice.yaml

2.配置文件优先级:

​ 服务名-profile.yaml > 服务名.yaml > 本地配置


Author: Ezio

Permalink: https://ezioy.cn/2022/05/21/Nacos/

License: Copyright (c) 2019 CC-BY-NC-4.0 LICENSE

Slogan: Nothing is true,Everything is permitted

Tag(s): # Spring Cloud # Nacos
back · home
Docker 理解计算机系统中的局部性原理
Ezio © 2019 - 2026 | Powered by Hexo & Chic | 访客数量:   浏览次数: | 渝公网安备50011302222043 | 渝ICP备2023013933号-1