Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】

news2024/11/24 3:57:12

Java之SpringCloud Alibaba【三】【微服务Nacos-config配置中心】

    • 一、Nacos-config配置中心
      • 1、官方文档
    • 二、快速配置
      • 1、Nacos-config基本操作
      • 2、Nacos配置中心使用
      • 3、Nacos客户端 每10ms去 注册中心 进行判断 根据MD5
      • 4、基于dataid 为yaml的文件扩展名方式
      • 5、支持自定义Group的配置
      • 6、支持自定义扩展的Data id配置
      • 7、@RefreshScope【设置动态感知对应配置变化】

一、Nacos-config配置中心

1、官方文档

Nacos提供用于存储配置和其他元数据的key/value存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用Spring Cloud Alibaba Nacos Confg,您可以在Nacos Server集中管理你
Spring Cloud应用的外部属性配置。
1.维护性 2.时效性 3.安全性
在这里插入图片描述
springcloud config对比
三大优势

  • springcloud config大部分应用场景结合git使用,动态变更还需要依赖Spring Cloud Bus消息总线来通过所有的客户端变化
  • springcloud config 大部分场景结果GIT使用,动态变更还需要SpringCloud Bus消息总线来通过所有客户端变化
  • nacos config 使用长轮询更新配置,一但配置变动后,通知Provider 的过程非常迅速,从速度上秒杀springcloud原来的config几条街
    在这里插入图片描述

二、快速配置

访问:http://192.168.180.128:8847/nacos/index.html#/login

1、Nacos-config基本操作

新增配置

在这里插入图片描述
在这里插入图片描述
点击发布
在这里插入图片描述
在这里插入图片描述

编辑配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看修改的历史信息

在这里插入图片描述
查看详情

在这里插入图片描述
在这里插入图片描述
详情和回滚等操作

在这里插入图片描述

监听查询

在这里插入图片描述

创建新的命名空间

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

将配置文件克隆到其他命名空间当中
在这里插入图片描述
在这里插入图片描述
用户管理&角色管理
在这里插入图片描述
添加用户
在这里插入图片描述
在这里插入图片描述
添加角色
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
权限管理
在这里插入图片描述
在这里插入图片描述
我们设置登出系统
在这里插入图片描述

在这里插入图片描述

2、Nacos配置中心使用

Nacos服务端初始化
1、启动Nacos Server,启动方式可见Nacos官网
2、启动好Nacos之后,在Nacos添加如下配置

Data ID: nacos-config.properties
Group : DEFAULT_GROUP
配置格式:Properties
配置内容:
user.name = 徐庶2
user.age = 11
在这里插入图片描述
Note 注意dataid是以properties(默认的文件扩展名方式)为扩展名

客户端使用方式
如果要在您的项目当中使用Nacos来实现应用的外部化配置,使用group ID为com.alibaba.cloud 和 artfact ID为spring-cloud-starter-alibaba-nacos-config的starter

<dependency>
	<groupId>com.alibaba.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

现在就可以创建一个标准的SpringBoot应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


@SpringBootApplication
public class ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigApplication.class,args);
    }
}

在这里插入图片描述
在这里插入图片描述

server:
  port: 8050
	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Nacos config 依赖-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

在这里插入图片描述

@SpringBootApplication
public class ConfigApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(ConfigApplication.class, args);
        String userName = applicationContext.getEnvironment().getProperty("user.name");
        String userAge = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("user name :"+userName +"; age: "+userAge);
    }
}

在运行此Example之前,必须使用bootstarp.properties配置文件来配置Nacos Server地址,例如
在这里插入图片描述
在这里插入图片描述

spring:
  application:
    name: nacos-config
  cloud:
    nacos:
      server-addr: 192.168.180.128:8847

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Nacos客户端 每10ms去 注册中心 进行判断 根据MD5

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、基于dataid 为yaml的文件扩展名方式

spring-cloud-starter-alibaba-nacos-config对于yaml格式也是完美支持的。这个时候只需要完成以下两步:

1、在应用的 bootstrap.properties配置文件中显示的声明dataid文件扩展名。如下所示
bootstrap.properties

spring.cloud.nacos.config.file-extension=yaml

在这里插入图片描述
在这里插入图片描述

user:
    name: 徐庶-yaml
    age: 11

在这里插入图片描述
我们发现拿不到配置信息了
在这里插入图片描述
需要修改对应的配置信息,设置对应读取文件扩展名
在这里插入图片描述

      # Nacos 客户端 默认是Properties 的文件扩展名  file-extension进行设置
      config:
        file-extension: yaml

在这里插入图片描述

      # Nacos 客户端 默认是Properties 的文件扩展名  file-extension进行设置
      config:
        file-extension: yaml
        #refresh-enabled: false nacos客户端将无法感知配置的变化

重新运行项目
在这里插入图片描述
设置多个环境的application.yml的配置文件
application-dev.yml
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上述输出的配置信息当中用户名是刚刚的配置信息,但是年龄是读取的依旧是旧的配置信息
在这里插入图片描述
设置namespace为dev
在这里插入图片描述

        namespace: dev

在这里插入图片描述
我们可以看到读取不到任何配置信息,因为我们没有设置dev环境下的配置信息
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
克隆成功
在这里插入图片描述

5、支持自定义Group的配置

在没有明确指定${spring.cloud.nacos.config.group}配置的情况下,默认使用的是DEFAULT_GROUP。如果需要自定义自己的Group,可以通过以下配置来实现:

spring.cloud.nacos.config.group=DEVELOP_GROUP

在这里插入图片描述
在这里插入图片描述

        group: itbluebox

读取不到对应的信息
在这里插入图片描述
克隆并设置Group
在这里插入图片描述
在这里插入图片描述
又可以继续读取到对应的配置信息
在这里插入图片描述

6、支持自定义扩展的Data id配置

Spring Cloud Alibaba Nacos Config从 0.2.1版本后,可支持自定义Data ld的配置。关于这部分详细的设计可参考这里。一个完整的配置案例如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

String userConfig = applicationContext.getEnvironment().getProperty("user.config");
            System.out.println("user name :"+userName +"; age: "+userAge + "; userConfig:"+userConfig);

在这里插入图片描述

group: itbluebox
        shared-configs:
          - data-id: com.itblueboxmall.common.properties
            refresh: true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

            #group:默认是Default-group
          - data-id: com.itblueboxmall.common2.properties
            refresh: true

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

            #group:默认是Default-group
        extension-configs[0]:
          data-id: com.itblueboxmall.common03.properties
          refresh: true

在这里插入图片描述

7、@RefreshScope【设置动态感知对应配置变化】

@Value注解可以获取到配置中心的值,但是无法动态感知修改后的值,需要利用@RefreshScope注解

在这里插入图片描述
在这里插入图片描述

@RestController
@RequestMapping("/config")
public class ConfigController {

    @Value("${user.name}")
    public String username;

    @RequestMapping("/show")
    public String show(){
        return this.username;
    }
}

在这里插入图片描述
在这里插入图片描述

http://localhost:8050/config/show
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
控制台输出的内容变了
在这里插入图片描述
再次访问对应的接口没有变化
http://localhost:8050/config/show
在这里插入图片描述
设置动态感知对应配置变化
在这里插入图片描述

@RefreshScope

重新启动运行项目
在这里插入图片描述
修改配置信息
在这里插入图片描述
在这里插入图片描述
控制台输出内容变了
在这里插入图片描述
访问:http://localhost:8050/config/show
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云OSS使用(小白也看得懂)

oss简介 oss是对象存储服务&#xff08;Object Storage Service&#xff09;的缩写&#xff0c;是一种分布式存储服务&#xff0c;用于存储和访问大规模数据。它提供了可靠、安全、低成本的数据存储解决方案&#xff0c;可以通过网络随时随地访问存储的数据。oss常用于存储图片…

Vue中实现图片黏贴上传到服务器:功能分析和实现

主要的知识点是&#xff0c;浏览的paste事件&#xff0c;clipboardData。 paste 一个标准的Dom事件&#xff0c;粘贴事件&#xff0c;会在用户按下Ctrlv ,或者通过鼠标复制时触发.像其他事件一样&#xff0c;我们可以通过addEventListener为一个Element添加一个粘贴事件的监听…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(三)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

三个视频怎么合成一个视频?分享简单好用的合并方法

通过将多个视频合并成一个&#xff0c;可以将分散的内容整合在一起&#xff0c;形成一个连贯的故事或主题。这对于制作影片、剧集、纪录片或视频日志等需要综合多个片段的项目非常有用&#xff0c;可以产生更连贯和流畅的观看体验。那么怎么将视频进行合并呢&#xff1f;给大家…

维度建模中的缓慢变化维

整理不易&#xff0c;转发请注明出处&#xff0c;请勿直接剽窃&#xff01; 点赞、关注、不迷路&#xff01; 摘要&#xff1a; 类型1.在当前数据行更新当前值&#xff0c;只有最新状态&#xff1b; 类型2.拉链表&#xff0c;保留历史又有最新状态&#xff1b; 类型3.新增列&am…

腾讯云CVM云服务器实例族是什么?区别选择攻略

腾讯云服务器CVM有多种实例族&#xff0c;如标准型S6、标准型S5、SA3实例、高IO型、内存、计算型及GPU型实例等&#xff0c;如何选择云服务器CVM实例规格呢&#xff1f;腾讯云服务器网建议根据实际使用场景选择云服务器CVM规格&#xff0c;例如Web网站应用可以选择标准型S5或S6…

Pytorch实现warm up和consine decay

在深度学习领域&#xff0c;模型训练过程中的不稳定性是一个常见的问题。为了解决这个问题&#xff0c;在Resnet这篇论文也提及了Warm Up的方法&#xff0c;通过逐渐增加学习率&#xff0c;引导模型在训练初期更稳定地收敛。同时在warm up之后结合consine decay的方法让训练变得…

计讯物联网关型水利遥测终端机TY910确保闸站自动化监测长效运行

闸站是我国水利建设工程的重要组成部分&#xff0c;具备调度水源、防洪排涝、灌溉等能力&#xff0c;在农业、水路运输、养殖业等行业领域起着关键作用&#xff0c;进而解决区域水资源不均衡的问题&#xff0c;促进水资源多方面的利用。当前&#xff0c;我国闸站存在数量多、分…

SonarQube安装、汉化及使用

一、环境准备 SonarQube下载&#xff1a;https://www.sonarqube.org/downloads/Java 11 或以上版本安装 多环境共存&#xff0c;指定 SonarQube 的java运行版本&#xff08;注意地址改为自己的java路径&#xff0c;最后面必须带java&#xff09;&#xff1a; 解压目录下 &#…

Atlas 200I DK A2视频保存

Atlas 200I DK A2开发者套件内置案例第一个目标检测&#xff0c;视频保存下来无法打开&#xff0c;修改为cv2保存可正常在本地展示。 原代码部分 def infer_video(video_path, model, labels_dict, cfg, output_pathoutput.mp4):"""视频推理"""…

YOLOv5解析 | 第四篇:common.py文件详解

前言 文件位置:**./models/commonpy** 该文件是实现YOLO算法中各个模块的地方,如果我们需要修改某一模块(例如C3),那么就需要修改这个文件中对应模块的的定义。这里我先围绕代码,带大家过一遍各个模块的定义,详细介绍我将在后续的教案中逐步展开。由于YOLOv5版本问题,同…

SpringBoot 如何处理 CORS 跨域?

Springboot跨域问题&#xff0c;是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点 跨域只存在于浏览器端&#xff0c;不存在于安卓/ios/Node.js/python/ java等其它环境跨域请求能发出去&#xff0c;服务端能收到请求并正常返回结果&#xff0c;只是结果被浏览器…

SpringMVC 中的数据绑定如何使用 @InitBinder 注解

SpringMVC 是一款基于 Java 的 Web 开发框架&#xff0c;它提供了许多方便开发的功能&#xff0c;其中包括数据绑定。在 SpringMVC 中&#xff0c;数据绑定的工作是由 DataBinder 类完成的。DataBinder 可以将 HTTP 请求中的数据绑定到 Java 对象中&#xff0c;并且还可以将 Ja…

《安富莱嵌入式周报》第316期:垂直降落火箭模型,超低噪声测量,开源电流探头,吸尘器BLDC,绕过TrustZone,提高频率计精度,CMSIS V6.0文档

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1rz4y1H71w/ 《安富莱嵌入式周报》第316期&#xff1a;垂直降落…

实验室服务器 环境配置记录

前言 本篇文章为本人自己(Toniht)在实验室服务器上配置环境的一些记录&#xff0c;我也是个半吊子&#xff0c;很多步骤都不知其所以然&#xff0c;主打一个能用就行。主要目的是方便后续遇见问题及时定位&#xff0c;或者后续再次需要时不用上网到处查找。次要目的是希望能帮…

从0到1学习Yalmip工具箱(1)-入门学习

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译&#xff1a;YALMIP 1.Yalmip工具箱的下载与安装 1.1下载 Yalmip的作者是Johan Lfberg&#xff0c;是由Matlab平台编程实现的一个免费开源数学优化工具箱&#xff0c;在官网上就可以下载。官方下载…

8-1-1、kuberbetes学习-service、deployment、ReplicaSet、pod

Kubernetes资源对象Pod、ReplicaSet、Deployment、Service之间的关系_CodingSoldier的博客-CSDN博客 Pod、ReplicaSet、Deployment、Service之间的关系如下图: deployment根据pod的标签关联到pod,是为了管理pod的生命…

Unity 事件函数的执行顺序

脚本生命周期流程图 Awake&#xff1a;在所有 Start 函数之前&#xff0c;以及 prefab 实例化之后调用。&#xff08;如果一个 GameObject 在启动期间处于非活动状态&#xff0c;则在激活之前不会调用它。&#xff09;OnEnable&#xff08;仅在对象处于活动状态时调用&#xff…

为你揭开ai绘画女生软件的神秘面纱

黄琳&#xff1a;嘿&#xff0c;我最近听说了一种叫做ai绘画的东西&#xff0c;你知道它是什么吗&#xff1f; 罗娜&#xff1a;听说这是一种通过人工智能技术来生成艺术作品的过程和方法。 黄琳&#xff1a;哦&#xff0c;那它生成的效果如何呢&#xff1f;有什么软件可以实…

2023IKCEST “一带一路” 国际大数据竞赛重磅启动!

2023IKCEST第五届“一带一路”国际大数据竞赛暨第九届百度&西安交大大数据竞赛&#xff0c;由联合国教科文组织国际工程科技知识中心&#xff08;IKCEST&#xff09;、中国工程科技知识中心&#xff08;CKCEST&#xff09;、百度及西安交通大学共同主办&#xff0c;旨在放眼…