SpringAli统一资源管理

如何做到资源的统一高效管理,nacos-config是一个不错的选择

springAli资源管理

  1. 统一资源管理的应用场景
  2. 实际操作(代码示例)

统一资源管理的应用场景

场景说明

在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。

也就是配置文件众多,你不可能每次更改后然后在打包为jar包运行,是否有一种方式可以通过读取远端的配置文件,随时可以更改端口或者服务名等一系列的动作

解决方案

解决方案:使用nacos config:使用 Spring Cloud Alibaba Nacos Config,可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置

作用原理

作用:在特殊的 bootstrap 阶段,配置被加载到Spring环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。

实际操作(代码示例)

1.启动nacos服务(添加配置文件,不限于消费者或者服务者的配置文件)

IMAGE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
sentinel:
transport:
dashboard: 127.0.0.1:8080
# 当前应用被sentinel监控的端口
port: 8720

server:
port: 8082

management:
endpoints:
web:
exposure:
include: "*"
#sentinel
feign:
sentinel:
enabled: true
#cus attr
user:
uname: wwj
age: 32

2.替换yml文件,新建读取属性文件bootstrap.properties

IMAGE

注意:Spring Boot 配置文件的加载顺序,依次为 bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml ,其中 bootstrap.properties 配置为最高优先级

3.新建一个controller用来作为数据可实时配置更新

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RestController
public class Tcontroller {

/**
* 注入配置文件上下文
*/
@Autowired
private ConfigurableApplicationContext applicationContext;
/**
* 从上下文中读取配置
*/
@GetMapping(value = "/hi")
public String getNameFromNacosConfig() {
return "Hello " + applicationContext.getEnvironment().getProperty("user.uname");
}
}

4.pom.xml中添加nacos-config的依赖

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

5.启动服务

IMAGE

更改配置文件再次访问

IMAGE