1.统一配置管理

  • 进入配置列表:登录 Nacos 控制台后,在左侧导航栏找到 “配置管理” 下的 “配置列表”,点击进入配置管理主界面 。
  • 创建新配置:在配置列表页面,点击 “+” 号按钮,触发添加新配置的弹窗,开始配置信息录入 。
  • 填写配置详情
    • Data ID:作为配置文件的唯一标识,一般遵循 “服务名称 + [.properties 或 .yml 等配置文件后缀]” 的命名约定,方便关联对应微服务 。
    • Group:用于对配置分组,通常使用默认的 “DEFAULT_GROUP” 即可,也可按业务、环境等自定义分组,实现配置的分类管理 。
    • 配置格式:支持多种格式,常用如 .yml(YAML 格式,语法简洁,适合复杂配置层级)、.properties(键值对形式,简单直观 )。
    • 配置内容:在编辑框按所选格式编写具体配置项,像定义时间格式 pattern: yyyy-MM-dd HH:mm:ss 这类配置规则 。
  • 发布配置:填写完上述信息,确认无误后点击 “发布” 按钮,配置就会保存到 Nacos 中,供微服务后续读取使用 。

 

2.微服务配置拉取

在 IDEA 中基于 Spring Cloud 微服务项目,实现从 Nacos 拉取配置,可按以下流程与说明操作:

 2.1 原理流程(结合图示)

项目启动时,先读取 bootstrap.yml(若有),从中获取 Nacos 地址 ,接着同时读取本地 application.yml 和 Nacos 服务端配置 ,之后创建 Spring 容器,最终加载 Bean,实现配置驱动应用初始化。

2.2 操作步骤与代码说明

2.2.1. 引入 Nacos 配置客户端依赖(以 Maven 项目为例)

在微服务模块(如 userservice)的 pom.xml 中,添加 Nacos 配置管理依赖,让项目能与 Nacos 配置中心交互:

xml

<!-- Nacos 配置管理依赖 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

2.2.2 . 配置 bootstrap.yml(引导配置,优先级高于 application.yml

在微服务模块的 src/main/resources 目录下创建 / 编辑 bootstrap.yml,配置 Nacos 地址、服务信息等,指定从 Nacos 拉取配置的规则:

spring:
  application:
    name: userservice  # 服务名称,Nacos 依据此拼接配置文件名
  profiles:
    active: dev  # 环境标识,如 dev、prod,用于区分不同环境配置
  cloud:
    nacos:
      server-addr: localhost:8848  # Nacos 服务端地址,本地部署示例
      config:
        file-extension: yaml  # 配置文件格式,与 Nacos 中配置的文件格式对应

2.2.3. Nacos 服务端添加配置

登录 Nacos 控制台(访问 localhost:8848/nacos,默认账号密码 nacos/nacos ),按规则创建配置:

  • 配置 Data ID:格式为 {spring.application.name}-{spring.profiles.active}.{file-extension} ,即 userservice-dev.yaml(与 bootstrap.yml 中配置对应)。
  • 配置内容:填写微服务所需配置,如数据库连接、自定义参数(如 pattern.dateformat )等。

2.2.4. 代码中使用 Nacos 配置

在业务代码(如 UserController )中,通过 @Value 注解注入 Nacos 配置的属性,示例:

@RestController
@RequestMapping("/user")
public class UserController {
    // 注入 Nacos 中配置的 pattern.dateformat 属性值
    @Value("${pattern.dateformat}") 
    private String dateformat; 

    @GetMapping("now")
    public String now() {
        // 用配置的日期格式格式化当前时间并返回
        return LocalDate.now().format(
            DateTimeFormatter.ofPattern(dateformat, Locale.CHINA)
        );
    }
}

2.3 流程说明(对应图示)

  1. 项目启动:微服务启动,优先加载 bootstrap.yml 。
  2. 读取 Nacos 地址:从 bootstrap.yml 获取 Nacos 服务端地址,建立连接。
  3. 拉取配置:依据 bootstrap.yml 中 spring.application.namespring.profiles.active 等,从 Nacos 拉取对应配置,同时也会读取本地 application.yml 。
  4. 创建 Spring 容器:整合本地与 Nacos 配置,初始化 Spring 容器。
  5. 加载 Bean:容器扫描、创建 Bean(如 UserController ),注入配置属性,完成应用启动与配置生效。

这样,微服务就能在 IDEA 中通过 Nacos 动态拉取、管理配置,实现配置中心化、环境差异化配置,方便配置更新与维护 。若 Nacos 地址、配置规则有调整,修改 bootstrap.yml 或 Nacos 控制台配置即可生效(部分场景需重启服务或配合配置自动刷新)。

 

 

3.配置热更新

在 Spring Cloud 集成 Nacos 场景下,可通过以下方式实现配置热更新,让微服务无需重启感知 Nacos 配置变更:

方式一:@Value + @RefreshScope

  1. 适用场景:需在类中通过 @Value 注入 Nacos 配置参数时,搭配使用实现热更新。
  2. 实现步骤
    • 在使用 @Value 注入配置的类(如 Controller、Service 等)上添加 @RefreshScope 注解,标记该类受 Nacos 配置热更新管理。
    • 示例代码:
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope // 关键注解,开启热更新能力
public class UserController {
    @Value("${pattern.dateformat}") // 注入 Nacos 中配置的参数
    private String dateformat; 
    // 业务方法可直接使用 dateformat,配置变更后无需重启类,值会刷新
}

方式二:@ConfigurationProperties

  1. 适用场景:需将 Nacos 配置映射为实体类属性,通过实体类统一管理配置时,可自动实现热更新。
  2. 实现步骤
    • 定义配置实体类,用 @ConfigurationProperties(prefix = "配置前缀") 关联 Nacos 配置,并确保类被 Spring 扫描(如加 @Component 等注解)。
    • 示例代码:
@Component 
@Data
@ConfigurationProperties(prefix = "pattern") // 关联 Nacos 中 pattern 前缀的配置
public class PatternProperties {
    private String dateformat; // 对应 Nacos 中 pattern.dateformat 配置
}
  • 在需要使用配置的类中注入该实体类,直接调用属性即可,配置变更后自动刷新:
@RestController
public class DemoController {
    @Autowired
    private PatternProperties properties; 

    @GetMapping("now")
    public String now() {
        return LocalDateTime.now().format(
            DateTimeFormatter.ofPattern(properties.getDateformat()) // 直接用实体类属性
        );
    }
}

注意事项

  • 配置范围:并非所有配置都适合放 Nacos,建议仅将关键参数(如运行时需动态调整的自定义参数)纳入,降低维护成本。
  • 自动刷新特性@ConfigurationProperties 方式默认支持自动热更新;@Value 需搭配 @RefreshScope 才生效,使用时需注意注解搭配。

通过以上两种方式,可灵活实现 Nacos 配置热更新,让微服务动态感知配置变化,提升系统灵活性与运维效率 。

4.配置共享

在微服务架构里,借助 Nacos 实现配置共享与管理,可让配置管理更灵活、高效,适配多环境部署需求,以下是其配置共享说明:

4.1 配置文件加载规则

微服务启动时,会从 Nacos 读取两类关键配置文件:

  1. 环境专属配置:格式为 [spring.application.name]-[spring.profiles.active].yaml ,比如 userservice-dev.yaml ,用于承载特定环境(如开发环境 dev )的个性化配置。
  2. 多环境共享配置:格式为 [spring.application.name].yaml ,比如 userservice.yaml 。无论 spring.profiles.active (环境标识)如何变化,该文件一定会加载 ,适合存放多环境通用的配置内容(如服务基础参数、通用连接配置等 )。

4.2 配置优先级

不同来源配置存在明确优先级,确保环境特异性配置可覆盖通用配置,规则为:
[服务名]-[spring.profiles.active].yaml(当前环境配置) > [服务名].yaml(Nacos 中多环境共享配置) > 本地配置

即环境专属配置优先级最高,可覆盖共享配置与本地配置;共享配置次之,能覆盖本地配置 。这样既保障通用配置复用,又支持环境差异化配置灵活生效,让配置管理适配开发、测试、生产等多环境需求。

4.3 实际应用场景

  • 多环境部署:开发环境用 xxx-dev.yaml 配置开发数据库、调试参数;生产环境通过 xxx-prod.yaml 替换为生产级配置,共享配置 xxx.yaml 存放服务名称、注册中心地址等通用内容,减少重复配置。
  • 配置动态更新:结合 Nacos 配置中心能力,配置变更无需重启服务,可通过监听机制实时推送生效,配合上述文件加载与优先级规则,精准控制不同环境配置更新逻辑。

简言之,Nacos 配置共享通过清晰的文件加载规则与优先级,实现了微服务多环境配置的 “通用复用 + 环境定制”,助力微服务架构高效管理配置,适配复杂部署场景 。

 

5.搭建Nacos集群

这是 Nacos 集群部署的典型架构,各组件作用及流程如下:

  1. nacos client:是使用 Nacos 服务的客户端应用,比如微服务应用,通过与 Nacos 服务端交互,实现服务注册、发现、配置获取等功能 ,主动发起对 Nacos 服务的调用请求。
  2. Nginx:作为反向代理和负载均衡器,接收 nacos client 发来的请求,依据配置的负载均衡策略(如轮询、权重等 ),将请求合理分配到后端的 Nacos node(nacos node1、nacos node2、nacos node3 )上,提升整体系统的请求处理能力和可用性,还可一定程度隐藏后端 Nacos 服务节点细节。
  3. Nacos node:即 Nacos 服务端节点,多个节点构成集群。它们共同提供服务注册中心和配置中心功能,节点间通过一致性协议(如 Raft 等 ,不同版本实现有差异 )保障数据同步,处理来自 Nginx 转发的客户端请求,进行服务信息管理、配置读写等操作,借助集群部署提升服务的高可用性和扩展性,避免单点故障。
  4. MySQL(主从):作为 Nacos 的持久化存储,主库(MySQL(主) )用于处理写操作(如服务注册信息写入、配置发布等 ),从库(MySQL(从) )通过主从复制机制同步主库数据,主要承担读操作,实现读写分离,提升数据库访问性能和可用性,Nacos 节点在需要持久化数据(如保存服务元数据、配置内容 )或读取历史数据时,与 MySQL 交互 。

整体流程为:nacos client 发起请求→Nginx 负载均衡转发→Nacos 节点集群处理请求(结合 MySQL 进行数据持久化及读取 ),各组件协同保障 Nacos 服务的高可用、高性能运行,支撑微服务架构中的服务治理和配置管理需求 。

 

 

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐