• Nacos作为配置中心详解


    前言

    在单体架构的时候我们可以将配置写在配置文件中,但有⼀个缺点就是每次修改配置都需要重启服务才能生效。
    当应用程序实例比较少的时候还可以维护。如果转向微服务架构有成百上千个实例,每修改⼀次配置要将全部实例重启,不仅增加了系统的不稳定性,也提高了维护的成本。
    在这里插入图片描述
    那么如何能够做到服务不重启就可以修改配置?所有就产生了四个基础诉求:

    • 需要支持动态修改配置
    • 需要动态变更有多实时
    • 变更快了之后如何管控控制变更风险,如灰度、回滚等
    • 敏感配置如何做安全配置

    Nacos配置模型

    在这里插入图片描述

    1. Nacos 提供可视化的控制台,可以对配置进行发布、更新、删除、灰度、版本管理等功能。
    2. SDK 可以提供发布配置、更新配置、监听配置等功能。
    3. SDK 通过 GRPC 长连接监听配置变更,Server 端对比 Client 端配置的MD5 和本地MD5是否相等,不相等推送配置变更。
    4. SDK 会保存配置的快照,当服务端出现问题的时候从本地获取。

    配置介绍

    在 Nacos Spring Cloud 中,dataId 的完整格式如下:

    ${prefix}-${spring.profiles.active}.${file-extension}
    
    • 1
    • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
    • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
    • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。支持 properties 、 yaml 和 yml 类型。

    实际演练

    springcloud项目中要使用Nacos配置中心,就必须将相关信息配置到bootstrap(.properties/.yaml)配置文件中,所以要让springcloud识别bootstrap文件就要导入相关依赖:

    		<dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-bootstrapartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4

    然后在bootstrap文件中进行配置:

    spring:
      cloud:
        nacos:
          discovery:	#nacos的地址,不写默认就是127.0.0.1:88848
            server-addr: 192.168.11.233:18848
            username: nacos
            password: nacos
          config:
            server-addr: 192.168.11.233:18848
            file-extension: yaml	#重点:文件格式就是在nacos中创建的配置文件是什么格式,要统一
            namespace: dev-namespace	# 命名空间的ID,我这里是自定义的,也可以自动生成,后面有讲解
            group: DEFAULT_GROUP	#默认组别,用于区分同一个namespace下的同名配置文件
            prefix: consumer01	#文件前缀,不写默认是 spring.application.name
      profiles:
        active: dev
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    由上面的配置可以得到文件名为:consumer01-dev.yaml,到Nacos中创建对应的配置文件:
    首先创建命名空间:
    因为我之前已经创建过dev了,现在以test为例:
    在这里插入图片描述
    在这里插入图片描述
    然后到dev下创建配置文件:
    在这里插入图片描述
    这两个地方都可以创建:
    在这里插入图片描述
    写入自己的配置即可:
    在这里插入图片描述
    OK,然后就可以将原项目中的application.yaml删除或注释掉,重启项目,能够正常运行!

  • 相关阅读:
    UE4 利用WEBUI插件完成UE与JS的交互 (UE4嵌入WEB)
    【全开源】Java聚合跑腿系统对接云洋聚合跑腿系统源码低价快递小程序APP公众号源码
    软件测试工具
    线性判别分析的多分类情况
    2022年的就业前景
    生产经验篇(2)——真实环境的MySQL机器配置规划
    Mybatis框架学习
    Android使用setXfermode例子
    【村长的算法教程】算法与数据结构基础重点
    嵌入式相关知识
  • 原文地址:https://blog.csdn.net/java_cpp_/article/details/128102620