Nacos分布式配置中心

Nacos 概念

1、Nacos 作为服务注册中心及概念:https://blog.csdn.net/qq_36763419/article/details/121167710
2、 Spring Cloud Alibaba Nacos Config 官方文档:https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/en-us/index.html

Nacos 配置中心——基础配置

1、新建 cloud-alibaba-nacos-config-center-client3377 模块。
2、引入 pom 依赖

<!--Cloud Alibaba Nacos Config-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--Cloud Alibaba Nacos Discovery-->
<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、写 yml 配置文件:bootstrap.ymlapplication.yml
问题:为什么需要两个 yml 配置文件?
Nacos 和 SpringCloud Config 一样,在项目初始化时,要保证从配置中心进行配置拉取,拉取配置后才能保证项目正常启动。SpringBoot 中配置文件的加载是存在优先级顺序的:bootstrap 优先级高于 application 。

(1)bootstrap.yml

server:
  port: 3377

spring:
  application:
    name: nacos-config-center-client
  cloud:
    nacos:
      # 服务注册
      discovery:
        server-addr: localhsot:8848 # 服务注册中心地址
      # 服务配置
      config:
        server-addr: localhost:8848 # 服务配置中心地址
        file-extension: yaml # 指定 yaml 格式的配置
        group: config-group1

(2)application.yml

spring:
  profiles:
    active: dev #表示开发环境

3、主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class NacosConfigCenterClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigCenterClientMain3377.class, args);
    }
}

4、controller 类

@RestController
@Slf4j
@RefreshScope
public class NacosConfigController {

    @Value(value = "${config.info}")
    private String configInfo;

    @GetMapping(value = "/nacos/config/getInfo")
    public String getConfigInfo() {
        return configInfo;
    }

}

5、启动 Nacos 并访问:http://localhost:8848/nacos,并配置 配置信息
(1)配置信息:
在这里插入图片描述

(2)解析:

Data Id 配置公式:${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}

1、${spring.application.name} 微服务名称
2、${spring.profile.active} 当前配置环境对应的配置文件 profile
3、${spring.cloud.nacos.config.file-extension} 指定配置文件格式,即文件后缀名

Group 配置公式:${spring.cloud.nacos.config.group}

6、测试及启动步骤
(1)启动 nacos ,并在配置管理中配置好对应环境的配置信息。
(2)启动客户端,如果客户端没有报错,并能够获取到配置信息则表示配置成功。

Nacos 配置中心——分类配置

一、问题为什么要分类配置?多环境多项目管理。
1、在实际的开发中,通常一个系统会准备 dev、test、prod 等环境,如何保证指定环境启动时服务能正确读取到 Nacos 上响应的配置文件呢?
2、一个大型的分布式微服务系统会有很多微服务子项目,每个微服务项目有都会有相应的 dev、test、prod 等环境。那怎么对这些微服务配置镜像管理呢?

二、问题Namespace + Group + Data Id 三者是什么关系?为什么要这样设计?
1、类似 Java 中的 Package 包名 和 Class 类名。最外层的 Namespace (默认:public)是可以用于区分部署环境,Group(默认:DEFAULT_GROUP) 和 Data Id 逻辑上区分两个目标对象。
在这里插入图片描述

Data Id 方案

默认的 namespace默认的 group 的条件下,通过修改 spring.profiles.active属性就能进行多环境下配置文件的获取。即通过修改 spring.profiles.active 属性就能获取不同环境(dev、test、prod等)的配置信息。

Group 方案

默认namespace、不同分组、相同的 Data Id 的情况下(建立DEV_GROUP、TEST_GROUP两个分组,spring.profiles.active 属性值相同),通过修改分组,能够获取相同Data Id 的配置文件信息。例如:负载均衡的微服务。

Namespace 方案

通过 Namespace、Group、Data Id 确定完整的配置获取路径。配置步骤如下:
1、新建命名空间
在这里插入图片描述
2、点击配置列表,发现出现 public 和 新建的哪两个命名空间
在这里插入图片描述
3、可以通过修改 bootstrap.yml 配置(namespace、group、spring.profiles.active)来获取配置文件信息。

Nacos 集群与持久化(重要)

Nacos 安装、集群部署和持久化配置:https://blog.csdn.net/qq_36763419/article/details/121179174

Nacos(阿里巴巴开源)是一个分布式配置中心,用于统一管理和提供各种环境的配置,包括生产环境、开发环境和测试环境。作为服务发现和配置中心Nacos可以帮助你简化服务之间的通信和配置管理,提高系统的可扩展性和灵活性。 以下是使用Nacos作为配置中心的基本步骤: 1. **添加依赖**: 在你的项目中,你需要在构建工具(如Maven或Gradle)的pom.xml或build.gradle文件中添加Nacos的客户端依赖。 2. **初始化Nacos客户端**: 在启动应用程序时,需要创建Nacos客户端实例,通常会设置Nacos服务器的地址(IP和端口)以及应用的配置前缀。 ```java NacosConfigFactory configFactory = NacosConfigFactory.create("localhost:8848"); NacosProperties props = new NacosProperties(); // 设置配置前缀 props.setConfigMap(Collections.singletonMap("configName", "your-config-name")); ConfigService configService = configFactory.init(props); ``` 3. **获取配置**: 使用`configService`对象,你可以动态地从Nacos服务器获取配置信息。例如,调用`getData()`方法获取配置数据。 ```java Properties properties = configService.getData().getProperties(); String value = properties.getProperty("key"); ``` 4. **配置变更监听**: Nacos支持配置变更监听,你可以注册一个回调函数来处理配置变化,这样可以实现实时更新应用配置。 ```java configService.addListener(new ConfigChangeCallback() { @Override public void onChange(String configName, ConfigChangeEvent event) { // 处理配置变化 } }); ``` 5. **服务发现**(如果需要): Nacos还提供了服务发现功能,可以通过注册服务实例并设置服务元数据,来实现服务的自动发现和路由。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌守

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值