一、Nacos配置中心使用
官方文档: https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
1. 快速开始
准备配置,在nacos server中新建order-service.yaml
Namespace:代表不同环境,如开发、测试、生产环境。 Group:代表某项目,如XX医疗项目、XX电商项目 DataId:每个项目下往往有若干个工程(微服务),每个配置集(DataId)是一个工程(微服务)的主配置文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lc2TLAQY-1651046962146)(./img/4-1.jpg)]
我们需要在public下创建一个order.yml的配置文件
2. 搭建nacos-config服务
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更
2.1 引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.2 添加bootstrap.yml
配置文件的信息需要写在bootstrap.yml文件中,才可以正常加载配置文件,然而我们这个版本没有自动依赖加载bootstrap的包,所以还得添加如下依赖:
<!--加载bootstrap文件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
添加配置
server:
port: 8010
spring:
application:
name: order
cloud:
nacos:
server-addr: 192.168.28.129:8848
config:
file-extension: yml
2.3 在程序中使用配置
@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController {
@Value("${str}")
private String str;
@Resource
private StockFeign stockFeign;
@GetMapping("/add")
public String add() {
log.info("添加商品!{}", str);
String forObject = stockFeign.reduce("666");
return "添加商品成功." + forObject;
}
}
这样启动项目,访问/order/add就可看到拿到了配置的参数 str 了。
3. Config相关配置
Nacos 数据模型 Key 由三元组唯一确定, Namespace默认是空串,公共命名空间(public),分组默认是 DEFAULT_GROUP
如下配置:就是读取地址在192.168.28.129:8848的nacos上namespace = dc2ec31d-1f60-4aa8-8c90-921cbb59b92d中group=BUSINESS_GROUP的order.yaml文件中的配置。
spring:
application:
name: order
cloud:
nacos:
server-addr: 192.168.28.129:8848
config:
file-extension: yaml
namespace: dc2ec31d-1f60-4aa8-8c90-921cbb59b92d
group: BUSINESS_GROUP
当然我们在开发中有很多的公共配置文件,这时候我们可以直接引用公共文件
spring:
application:
name: order
cloud:
nacos:
server-addr: 192.168.28.129:8848
config:
file-extension: yaml
namespace: dc2ec31d-1f60-4aa8-8c90-921cbb59b92d
group: BUSINESS_GROUP
shared-configs:
- dataId: common.yaml
group: COMMON_GROUP
refresh: true
还有一种是spring.cloud.nacos.config.extension-configs[n].data-id的配置方式,和shared-configs是一模一样的,就不展示了,可见我们的配置是灵活的也是多种多样的,那么这么多的配置方式同时配置同一个属性的时候,以什么为准呢?
配置的优先级
Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。
- A: 通过
spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置 - B: 通过
spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置 - C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置
当三种方式共同使用时,他们的一个优先级关系是:A < B < C
当处于同一个方式里,就是谁在后用谁,extension-configs[n].data-id,也就是n越大越优先。
--------------最后感谢大家的阅读,愿大家技术越来越流弊!--------------
--------------也希望大家给我点支持,谢谢各位大佬了!!!--------------
|