SpringCloudalibaba之Nacos的配置管理

简介: 如图所示,nacos-config-example被192.168.56.1获取过。

动态配置服务


动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。


动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。


配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。


前提:


需要搭建一个nacos单机或者集群,按照链接文档搭建


创建配置

这里先创建配置,好在应用集成的时候说明参数释义


创建命名空间,在命令空间菜单下,点击新建,空间名为nacos-config-example



  1. 点击创建配置,按照以下图示创建,并点击发布



这里有个dataId,是应用获取nacos配置文件的唯一标识,匹配规则在应用集成


应用集成


创建nacos-config-example模块


  1. 引入依赖


  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
    </dependencies>


spring-boot版本号为2.4.2,nacos-config版本号为2021.1,bootstrap版本号为3.0.3,在父pom中定义,此处不展示


  1. 创建ConfigApplication,此处将controller也写在一块
package cn.axj.config;

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

@RestController
@SpringBootApplication
public class ConfigApplication {
    @Value("${useLocalCache}")
    private boolean useLocalCache;

   /**
     * 测试连接,获取配置信息
     */
    @GetMapping("/config")
    public Object config(){
        return useLocalCache;
    }
    
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class,args);
    }
}

  1. 在resources下创建bootstrap.yml文件,并配置nacos配置中心的相关信息
spring:
  application:
    name: nacos-config-example
  cloud:
    nacos:
      config:
        group: nacos-config-example-group
        namespace: nacos-config-example
        server-addr: 192.168.56.102:8848,192.168.56.104:8848,192.168.56.105:8848
        file-extension: yml
        prefix: ${spring.application.name}

参数释义:


image.png


tips: 这里可以看到nacos没有配置username,password可以直接访问到nacos,并获取配置信息。这是因为nacos默认的弱鉴权机制,官方强烈不推荐nacos暴露到公网环境中,如果要暴露到公网环境中,需要自己实现nacos的鉴权插件,实现自己的鉴权逻辑,不然会有巨大的安全风险。


关于应用会从nacos配置中心获取哪一份配置的说明

说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。


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


${prefix}-${spring.profiles.active}.${file-extension}

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 类型。

启动ConfigApplication,访问localhost:8080/config,看到返回最开始配置的false


在线编辑&动态刷新




选中nacos-config-example.yml,点击编辑,将useLocalCache配置改成true,并点击发布



访问localhost:8080/config,看到返回还是最开始配置的false


如何实现动态刷新


在controller类上面加上SpringCloud的原生注解@RefreshScope,需要动态刷新的controller都需要加上


在ConfigApplication上面加上@RefreshScope注解



@RestController
@SpringBootApplication
@RefreshScope
public class ConfigApplication {
    ...
}

重启应用,由于此时,useLocalCache的值已经变成true,所以此时访问localhost:8080/config,会返回true


将useLocalCache的值改成false,并点击发布,再次访问localhost:8080/config,观察返回值是否同步更新


一键回滚

当动态更新配置的时候,由于错误配置等各种原因,需要将配置还原,nacos提供了历史版本功能。可以直接回滚到想要的版本中去。


1.点击历史版本,或者菜单栏点击历史版本模块



  1. 历史版本界面




  • 点击详情可以看到当前版本的配置内容
  • 点击对比可以看到当前版本对应上一个版本的变动内容
  • 点击回滚后,点击回滚配置,可以将配置更新到当前版本


监听查询


监听查询有配置和ip的维度。

通过搜索对应的配置信息,可以查询到有哪个ip的机器获取过该配置信息。



如图所示,nacos-config-example被192.168.56.1获取过。


tips,由于我的nacos(192.168.56.102-105)在虚拟机环境下,所以宿主机ip为192.168.56.1

目录
相关文章
|
4月前
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
283 0
|
1月前
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
77 0
|
5月前
|
Java 数据库连接 Nacos
nacos配置管理拉取不到配置异常
在搭建Nacos配置时遇到异常,因配置了`file-extension: yaml`,服务尝试拉取`shared-jdbc.yaml`, `shared-log.yaml`, `shared-swagger.yaml`,但Nacos中这些共享配置的Data ID无后缀。修正方法是确保Data ID与预期文件名一致,包括.yaml扩展名。在验证中,修改了部分Data ID并导致服务因找不到未加后缀的`jdbc`配置而报错,提示在配置Data ID时应包含文件扩展名。
207 1
|
6月前
|
Java Nacos 数据格式
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
Spring Cloud Nacos 详解:服务注册与发现及配置管理平台
219 3
|
6月前
|
开发框架 .NET Nacos
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
使用 Nacos 在 C# (.NET Core) 应用程序中实现高效配置管理和服务发现
516 0
|
7月前
|
负载均衡 Nacos 数据库
【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置
【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置
177 1
|
6月前
|
SpringCloudAlibaba 负载均衡 Java
SpringCloudAlibaba之nacos的服务注册与发现
如图所示:按照图示搭建一个nacos作为服务注册中心的简单应用.
46 0
|
7月前
|
SpringCloudAlibaba Nacos 数据中心
SpringCloudAlibaba Nacos集群改为单机版启动
SpringCloudAlibaba Nacos集群改为单机版启动
134 0
|
7月前
|
负载均衡 Java Nacos
Nacos作为一个服务发现与配置管理工具,它本身不直接依赖于`ribbon-loadbalancer`包
Nacos作为一个服务发现与配置管理工具,它本身不直接依赖于`ribbon-loadbalancer`包【1月更文挑战第18天】【1月更文挑战第89篇】
78 4
|
7月前
|
Java 数据库连接 Nacos
Nacos作为一个服务发现和配置管理平台
Nacos作为一个服务发现和配置管理平台【1月更文挑战第18天】【1月更文挑战第88篇】
81 4