分布式配置中心-Nacos简单实践

分布式配置中心是一种用于管理和集中存储应用程序配置的系统,特别适用于大规模、复杂的分布式系统。它的主要目标是将应用程序的配置信息从代码中分离出来,使得配置可以在运行时进行动态修改和管理,而无需重新部署应用程序。

以下是分布式配置中心的一些关键特点和优势:

  1. 集中管理: 分布式配置中心允许将所有应用程序的配置集中存储在一个地方,从而方便统一管理和修改配置,避免了在每个应用程序实例中手动更改配置。
  2. 动态更新: 配置中心支持在应用程序运行时动态更新配置,而无需重新启动或重新部署应用。这对于需要频繁变更配置的场景非常有用。
  3. 版本控制: 配置中心通常支持配置版本控制,使得可以跟踪配置的变更历史,方便回退或恢复配置。
  4. 环境隔离: 配置中心允许将不同环境(如开发、测试、生产)的配置隔离开来,从而确保在不同环境中使用不同的配置。
  5. 动态扩展: 配置中心可以支持多个应用程序实例和多个团队同时访问,并能够处理高并发的配置请求。
  6. 安全性: 配置中心通常提供权限控制,确保只有授权用户可以访问和修改配置。
  7. 集成支持: 配置中心可以与其他工具和框架集成,如监控系统、CI/CD流水线等,从而更好地支持自动化和运维流程。

Nacos

Nacos(Naming and Configuration Service)是阿里巴巴开源的一个用于服务发现、动态配置管理和可视化平台的项目。它结合了服务发现、配置管理和健康监测等功能,是一个综合的微服务基础设施组件。其中,Nacos的配置管理部分可以被用作分布式配置中心。

  • 添加nacos配置管理依赖

    1
    2
    3
    4
    5
      <!-- nacos的配置管理依赖 -->
    <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
  • 在resource下创建bootstrap.yaml配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    spring:
    application:
    name: gateway
    profiles:
    # 环境
    active: dev
    cloud:
    nacos:
    # nacos地址
    server-addr: localhost:8848
    config:
    # 文件后缀
    file-extension: yaml
    1. 配置加载顺序: 在Spring Boot应用程序中,配置文件的加载顺序是有一定规则的。bootstrap.yaml 配置文件在加载顺序上位于其他配置文件(如 application.yamlapplication.properties)之前。这意味着它可以用于配置一些在应用程序启动之前就需要的属性,例如连接到配置服务器的属性。
    2. 外部配置加载: 通常,分布式系统中的应用程序可能需要从配置中心(如Nacos、Consul等)获取配置信息。bootstrap.yaml 配置文件可以用来配置与配置中心的连接和身份验证等信息,以便在应用程序启动时能够正确地加载配置。
  • 在nacos中以<spring.application.name>-<spring.profiles.active>.yaml作为data id在DEFAULT_GROUP新建配置,例如:gateway-dev.yaml

    image-20230823161911507

项目启动后,无需重新启动或停机就会从nacos中动态加载配置下来,通过@Value即可获取对应的值。如果您将配置属性注入到了Spring管理的Bean中,而且希望在配置发生变化时动态刷新Bean的状态,您可以使用 @RefreshScope 注解。

1
2
3
4
5
6
7
8
9
@Component
@RefreshScope
public class MyService {

@Value("${config.hello}")
private String helloConfig;

// ...
}

分布式配置中心-Nacos简单实践
https://cason.work/2023/08/23/分布式配置中心-Nacos简单实践/
作者
Cason Mo
发布于
2023年8月23日
许可协议