当前位置: 首页 > news >正文

Nacos入门实战(二)配置中心及配置实战

SpringCloud alibaba-Nacos配置中心及实战配置demo

  • 配置中心基础使用
    • 基础配置demo
      • 1、配置文件
      • 2、代码
      • 3、创建配置
      • 4、访问
    • 更多配置测试
      • 1、关于配置中心生效的粗细粒度图
      • 2、案例一:不同的开发环境,可通过命名规则定义配置,从而加载相关信息;
        • 1)、新建一个prod环境的配置
        • 2)、对代码中appilication.yaml文件进行调整
        • 3)、访问
      • 3、不同组别,相同环境的配置
        • 1)、新建俩配置,相同Data Id 不同group 。
        • 2)、代码中yaml文件的调整
      • 4、分组不同,相同环境不同Data Id
      • 5、命名空间配置
        • test 1、指定命名空间,分组名称和 prefix ;
        • test 2、一个分组对应多个data Id

配置中心基础使用

配置中心的相关信息,是在bootstrap.yaml中配置的。项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。springboot的配置文件加载优先级为bootstrap在先,application在后。bootstrap.yaml作用是让服务注册到nacos中以及到nacos中读取指定后缀为yaml的配置文件。

基础配置demo

1、配置文件

application.yaml文件的配置内容

spring:
  profiles:
    active: dev

bootstrap.yaml文件的配置内容

server:
  port: 6688
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8010
      config:
        server-addr: localhost:8010
        file-extension: yaml

2、代码

主启动类添加注解:

@EnableDiscoveryClient

新建controller,访问配置中心信息

@RefreshScope
@RestController
public class ClientConfigController {

    @Value("${config.info}")
    private String confInfo;

    @GetMapping("/confInfo")
    public String configInfo(){
        return confInfo;
    }
}

3、创建配置

路径:配置管理->配置列表
命名规则如下
在这里插入图片描述

4、访问

在这里插入图片描述
修改nacos配置信息为abc,刷新浏览器,会看到立即生效。

更多配置测试

1、关于配置中心生效的粗细粒度图

关于配置的相关信息,这么看,是不是直观一些呀 ; )
在这里插入图片描述
一个系统,包含多个应用,一个应用可以包含多个模块。每个模块都有对应不同的环境【比如开发环境,测试环境,预发环境,正式环境】;关于Group 可以是模块唯独,也可以是环境纬度;可以按实际情况按需配置。

如有不对或表述不清晰的地方,欢迎帮忙纠正和提建议。

2、案例一:不同的开发环境,可通过命名规则定义配置,从而加载相关信息;

1)、新建一个prod环境的配置

通过克隆现有配置即可,修改Data Id为prod环境
在这里插入图片描述
可以编辑配置信息为prod,用来区分;然后发布;
在这里插入图片描述

2)、对代码中appilication.yaml文件进行调整

环境改为prod;重启服务
在这里插入图片描述

3)、访问

访问接口,可以看到效果,以上是同一个分组,内含不同环境的配置
在这里插入图片描述

3、不同组别,相同环境的配置

比如场景:item 和 search模块,对应相同的prod环境配置文件;

1)、新建俩配置,相同Data Id 不同group 。

在这里插入图片描述

2)、代码中yaml文件的调整

代码中yaml文件调整,指定分组名称:group: SEARCH

server:
  port: 6688
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8010
      config:
        server-addr: localhost:8010
        file-extension: yaml
        group: SEARCH

4、分组不同,相同环境不同Data Id

比如item模块,对应prod环境配置文件 nacos-config-client-search-prod.yaml ,代码中 yaml文件内容的调整
需要指定分组和prefix,做更细粒度的配置。

server:
  port: 6688
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8010
      config:
        server-addr: localhost:8010
        file-extension: yaml
        group: SEARCH
        prefix: nacos-config-client-search

配置中心创建配置如下图:
在这里插入图片描述

5、命名空间配置

场景:不同系统间,需要自己独有的配置。
可以通过命名空间区分不同系统间配置。

test 1、指定命名空间,分组名称和 prefix ;

代码中yaml文件内容调整为

server:
  port: 7777
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yaml
        group: ITEM
        prefix: nacos-config-client-item
        namespace: 1e132bb4-aab9-4853-8e92-347esssef13e

指定分组,prefix , namespace .
在配置中心,配置管理->配置列表,创建不同的命名空间,指定应用,分组和Data Id
在这里插入图片描述

test 2、一个分组对应多个data Id

场景比如:一个item模块,有多个独立的中间件配置
在这里插入图片描述
需要一个分组下多个Data Id这种更细粒度的场景,可以这样配置yaml文件:
通过增加extension-configs数组指定配置信息的Data Id和Group

server:
  port: 6688
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8010
      config:
        server-addr: localhost:8010
        file-extension: yaml
        namespace: xxxxcef-f007-4073-9cff-dhsj628sncb0
        extension-configs[0]:
          data-id: item-redis-prod.yaml
          group: ITEM
          refresh: true
        extension-configs[1]:
         data-id: item-mybatis-prod.yaml
         group: ITEM
         refresh: true

对应代码接口demo

package com.nacosconf.nacosconfig7777.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Auther: gina
 * @Date: 2025-03-12
 * @Description:
 */
@RefreshScope
@RestController
public class ClientConfigController {
    @Value("${config.info}")
    private String confInfo;
    
    @Value("${config.mybatisInfo}")
    private String mybatisInfo;

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

    @GetMapping("/mybatisInfo")
    public String mybatisInfo() {
        return mybatisInfo;
    }

    @GetMapping("/redisInfo")
    public String redisInfo() {
        return redisInfo;
    }

    @GetMapping("/configInfo")
    public String configInfo() {
        return confInfo;
    }
}

直接访问接口,并且改动配置信息再次访问接口,访问到的是更新配置后的内容。

需要注意⚠️的点,就是在调整配置的时候,总会有问题🤨,希望大家能静下心来耐心调试,如果报错或者没生效,要检查好配置中心配置信息和代码中获取配置信息的路径是否一致;是否加了自动刷新注解,以及yaml中的分组,命名空间,prefix等是否正确。

还有一个比较重要的点‼️需要注意⚠️

  • 若上线时有新增的配置信息,一定要到配置中心先配置好,再上代码,不然会报错的

相关文章:

  • 在shell中分割文件
  • Python-树状数组算法入门
  • Linux中基础开发工具详细介绍
  • 16.AVL树实现
  • 关于 NoC 中数据安全传输的设计与实现的详细介绍
  • C++ 容器库概述:序列容器、关联容器与无序关联容器的原理、性能与应用
  • Docker Compose 使用笔记
  • QT 学习一 paintEvent,QPainter ,QImage
  • 智慧城市运行管理服务平台建设方案
  • STM32串口通信
  • ‘java‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  • 【网络】什么是 IHL(Internet Header Length,首部长度)TTL(Time To Live,生存时间)?
  • 【编解码技术】什么是编码复杂度?
  • SpringMVC(三)响应处理
  • 构建智能汽车地图标准体系:自动驾驶技术的基石
  • 一文讲清楚CUDA与PyTorch、GPU之间的关系
  • 基于Python的selenium入门超详细教程(第1章)--WebDriver API篇
  • 【Linux-传输层协议TCP】TCP协议段格式+确认应答+超时重传+连接管理机制(三次握手、四次挥手、理解TIME_WAIT + CLOSE_WAIT)
  • 结构型——适配器模式
  • 二维数组常见应用场景以及示例
  • seo网站优化教程/广州推广排名
  • 湛江北京网站建设/厦门人才网个人会员登录
  • 拍摄网/厦门seo排名
  • 怎么查网站做404页面没/独立站建站平台有哪些
  • 商城网站开发用什么框架/想要网站导航正式推广