Spring Cloud Alibaba Nacos Config - - - >配置中心

news2024/11/15 23:26:44

官方文档:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config



市面上比较有名的配置中心:

  • Spring Cloud Config
  • Apollo
  • Spring Cloud Alibaba Nacos Config

Spring Cloud Config 大部分场景结合 git 使用,动态变更还需要依赖Spring Cloud Bus消息总线来通知所有的客户端变化。并且Spring Cloud Config 不提供可视化界面。

Spring Cloud Alibaba Nacos Config使用长轮询更新配置,一旦配置发生变更后,通知 provider 的过程非常迅速,速度上秒杀 Spring Cloud Config。



Spring Cloud Alibaba Nacos Config的优势:

  • 维护性
  • 时效性
  • 安全性

维护性:在一个大型微服务项目中,可能会有几百上千个微服务。而每个微服务中都可能会有相同的配置项 ( Redis配置MySQL配置MQ配置等 ),给运维人员带来极大的负担,并且也不利于后期的维护。所以通过 Nacos 配置中心集中统一配置管理这些公共配置部分,然后在需要的微服务中引入这些配置,极大地降低了维护成本。

时效性:某个配置文件发生变更后,需要对服务器进行重启是配置文件生效,而这个过程是需要一定的时间的,这就有可能造成多个服务之间数据的不一致(比如OrderService服务集群了5台服务器,而我们修改了OrderService服务中的Redis配置发生了变更,那么这5台服务器都需要重启,但重启是有先后顺序的,当你重启了第一台服务器,后面4台还未来得及重启时,这个过程中它们的一致性是无法保证的,因为在第一台服务器重启时,其它4台服务器可能会发生数据变更)。

安全性:避免在配置文件中暴露敏感信息(如暴露数据库的用户名和密码,出现删库跑路之类的问题),而Naocs配置中心提供了不同的权限控制来解决这些问题。

cd



NameSpace / Group / Data-Id

cd
Namespace:代表不同的环境,如:开发、生产、测试环境。

Group:代表某项目,如:xx医疗项目、xx电商项目。不同的Group可以有相同的Data-Id

Data-Id:每个项目下有若干个工程(微服务),每个配置集(Data-Id)是一个工程(微服务)的主配置文件。



Nacos 权限控制

  要使用 nacos 权限控制功能,必须要将 nacos 安装目录下conf目录中的 application.properties 配置文件中的 nacos.core.auth.enabled=false 配置项修改成 nacos.core.auth.enabled=true 开启权限功能,否则在 Nacos Server 控制台中的权限管理设置就无法生效。

### If turn on auth system:
nacos.core.auth.enabled=true

为什么要使用 nacos 权限控制 ?

  • 对于不同的开发人员,基于不同的权限,可以有效的保证数据的安全性。比如某些开发人员只有读配置文件的权限,可以有效的防止类似于删库跑路的情况发生。



Nacos配置中心使用 [官网]

服务端准备

1. 执行./usr/local/nacos/nacos8849/bin/startup.sh命令启动 Nacos Server。启动方式可见 Nacos 官网


2. 启动 Nacos Server之后,在 Nacos 控制台中添加如下配置:
  • 注意:dataId 默认是以 properties ( 默认的文件扩展名方式 ) 为扩展名。
Data ID:    nacos-config.properties

Group  :    DEFAULT_GROUP

配置格式:    Properties

配置内容:   user.name=nacos-config-properties
            user.age=90

cd

cd


客户端准备

1. 如果要在项目中使用 Nacos 来实现应用的外部配置 ( 客户端使用 Nacos 配置中心 )。需要引入如下依赖

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

2. 在使用 Nacos 配置中心的配置文件之前,必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址:注意:要使用 Nacos 配置中心,必需要在bootstrap.properties / bootstrap.yml中配置,bootstrap.yml配置文件的加载顺序要优先于application.yml

  • bootstrap.properties
spring.application.name=nacos-config
spring.cloud.nacos.config.server-addr=192.168.184.129:8849
# 需要配置nacos的 用户名和密码,否则报unknown user!错误
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
  • 注意:在 SpringBoot 2.4.x 的版本之后,对于 bootstrap.properties/bootstrap.yml 配置文件的支持,需要导入以下依赖配合使用,否则 bootstrap.properties 配置不生效
<!--否则不生效-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

3. 创建一个标准的 SpringBoot 应用进行测试

@SpringBootApplication
public class Nacos8030Apllication {

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(Nacos8030Apllication.class, args);

        String username = applicationContext.getEnvironment().getProperty("user.name");
        String age = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("username: " + username + ", age: " + age);
    }

}

4. 启动这个 Example,可以看到如下输出结果:

2022-12-08 20:42:14.112  INFO 10884 --- [  restartedMain] c.a.c.n.refresh.NacosContextRefresher    : listening config: dataId=nacos-config, group=DEFAULT_GROUP
username: nacos-config-properties, age: 90



基于 dataId 为 yaml 的文件扩展名配置方式 [官网]

Nacos客户端默认读取的是 properties 的文件扩展名,对于其它扩展名的配置文件无法感知。但 spring-cloud-starter-alibaba-nacos-config 对于 yaml 格式也是完美支持的,只需要完成以下两步:

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

bootstrap.yml

spring:
    cloud:
        nacos:
            config:
                file-extension: yaml
spring:
    application:
        name: nacos-config
    cloud:
        nacos:
            config:
                server-addr: 192.168.184.129:8849
                # 需要配置nacos的 用户名和密码,否则报unknown user!错误
                username: nacos
                password: nacos
                # 如果在nacos控制台中选择的配置文件扩展名为yaml,则需要在应用的bootstrap.yml中指定该文件扩展名为yaml
                file-extension: yaml

bootstrap.properties

spring.cloud.nacos.config.file-extension=yaml
spring.application.name=nacos-config
spring.cloud.nacos.config.server-addr=192.168.184.129:8849
# 需要配置nacos的 用户名和密码,否则报unknown user!错误
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
# 如果在nacos控制台中选择的配置文件扩展名为yaml,则需要在应用的bootstrap.properties中指定该文件扩展名为yaml
spring.cloud.nacos.config.file-extension=yaml

2. 在 Nacos 控制台中新增一个 dataId 为 yaml 扩展名的配置,如下所示
Data ID:        nacos-config.yaml

Group  :        DEFAULT_GROUP

配置格式:        YAML

配置内容:        user.name: nacos-config-yaml
                user.age: 68

3. 这两步完成后,重启测试程序。
@SpringBootApplication
public class Nacos8030Apllication {

    public static void main(String[] args) {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(Nacos8030Apllication.class, args);

        String username = applicationContext.getEnvironment().getProperty("user.name");
        String age = applicationContext.getEnvironment().getProperty("user.age");
        System.out.println("username: " + username + ", age: " + age);
    }

}

4. 可以看到如下输出结果。

2022-12-07 15:00:00.720  INFO 19812 --- [  restartedMain] c.a.c.n.refresh.NacosContextRefresher    : listening config: dataId=redis.yaml, group=DEFAULT_GROUP
username: nacos-config-yaml, age: 68

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

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

相关文章

Python获取世界杯热搜榜,并制作脚本自动发送信息到邮箱

前言 现在正是卡塔尔世界杯激战正酣的时候&#xff0c;每天都有各种各样的新闻。而且&#xff0c;不同的球队&#xff0c;随着比赛的进程&#xff0c;关注的热度也会发生翻天覆地的变化。 今天我们就来获取卡塔尔世界的球队热搜榜&#xff0c;并制作自动发送邮件脚本&#xff…

深度优先搜索(DFS)剪枝:记忆化搜索(C++)

目录 一、基本思想 二、样例 三、程序 1、普通的深度优先搜索 2、分析 3、记忆化搜索 程序 四、实际速度样例 一、基本思想 今天我们来讲一下深搜的剪枝方法中的一个&#xff1a;记忆化搜索。 顾名思义&#xff0c;记忆化搜索就是让程序记住一些东西&#xff0c;然后可以…

Stimulsoft Dashboards.JS JavaScript 2203.1.0仪表板

Stimulsoft Dashboards.JS--Ω578867473 Dashboards.JS 是一个功能齐全的工具&#xff0c;用于为 JavaScript 平台创建仪表板。 JavaScript 仪表板 Dashboards.JS 是一个功能齐全的工具&#xff0c;用于为 JavaScript 平台创建仪表板。要生成和查看仪表板&#xff0c;您需要任何…

Qt扫盲-QAbstractButton 笔记总结

QAbstractButton使用总结一、概要1.显示内容2. 快捷键3. 对话框默认按钮4. 按钮状态5. 信号说明6. 自定义按钮QAbstractButton 类实现的是一个抽象按钮。主要是Button类具有的共性&#xff0c;但是处理用户的操作响应、并绘制不同按钮的形式是由子类来完成的。一、概要 QAbstr…

图文深度解析Linux内存碎片整理实现机制以及源码

图文深度解析Linux内存碎片整理实现机制以及源码。 物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外)。申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的。随着系统运行时间变长后,将会出现以下情况: 在多道程序当中,如果要让我们的程…

深度解析车载域控制器

文章目录域控制器域控制器的组成ADAS域控制器智能座舱域HUD仪表盘IVI域控制器的发展域控制器对传统ECU的挑战域控制器 ​ 随着车辆的信息化程度的发展&#xff0c;车辆的ECU也越来越多&#xff0c;从引擎控制、转向助力、仪表、影音等&#xff0c;传统的汽车电子电气架构是分布…

基于Intel® Core™ i5 机器人控制器

XM-6815是一款基于Intel 11代酷睿i系列平台CPU壁挂式电脑&#xff0c;扩展内存槽&#xff0c;1mSATA&#xff0c;3千兆网口&#xff0c;6COM&#xff0c;4USB 3.0&#xff0c;4USB 2.0。该产品适合工业机器人控制器、机器视觉控制器等壁挂安装应用场景. 产品规格 产品类型Inte…

阿里巴巴内部不传之秘「十亿级并发系统顶级教程」GitHub一夜封神

何为超大流量&#xff1f; 超大流量是一个很容易理解的意思!举个例子&#xff1a;现在国内疫情反弹&#xff0c;每个小区都要做核酸那么如果同一时间下来一大批人一起做核酸&#xff0c;那么这就是大流量&#xff0c;然后志愿者将人员进行分配排队让医务人员处理的过来那么这就…

Qt5.6.1移植海思Hi3521d(二)

系列文章目录 Qt5.6.1移植海思Hi3521d&#xff08;一&#xff09; 前言 该篇讲解一下&#xff0c;使用海思交叉编译器arm-hisiv500-linux-gcc&#xff0c;编译qt5.6源码&#xff0c;搭建qt交叉编译环境 一、修改qmake.conf 打开文件~/Project/qt-everywhere-opensource-src-5…

Python制作简易版烟花,没资金买烟花就来做个电子版的吧

前言 听说有人说我很久没更新了&#xff0c;那今天来表演个粒子烟花 跨年倒计时20天&#xff1f;我已经开始整烟花了&#xff0c;虽然不是很好看吧&#xff0c;但是也能将就看看 &#x1f625; 这个的背景图&#xff0c;音乐&#xff0c;还有文字都是可以自己修改的哦 效果…

[附源码]JAVA毕业设计-心理健康管理-(系统+LW)

[附源码]JAVA毕业设计-心理健康管理-&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

String 创建了几个对象?

问题一 String zy1 “小朱”; String zy2 “小朱”; 复制代码 问题二 String zy1 “小朱”; String zy2 “大朱”; 复制代码 问题三 String zy1 new String(“小朱”); String zy2 new String(“小朱”); 复制代码 问题四 String zy1 new String(“小朱”);…

09 - 主引导程序控制权的转移

---- 整理自狄泰软件唐佐林老师课程 文章目录1. BootLoader内存布局2. 通过FAT表加载文件内容3. 编程实验&#xff1a;Loader文件内容的加载4. 第一个Loader程序4.1 汇编小贴士&#xff1a;标志寄存器4.2 编程实验&#xff1a;控制权转移5. 小结1. BootLoader内存布局 2. 通过F…

你还不知道「并发下的三色标记」么?

引用计数算法 在对象中添加一个引用计数器&#xff0c;每当有一个地方引用它时 计数器值就加一;当引用失效时&#xff0c;计数器值就减一; 任何时刻计数器为零的对象就是不可能再被使用的。 引用计数算法的缺陷 如下面代码&#xff0c;两个对象互相引用导致无法回收♻️ 对…

【OpenCV学习】第12课:特征提取(高斯不同)

仅自学做笔记用,后续有错误会更改 理论 定义&#xff1a;就是把同一张图像在不同的参数下做高斯模糊之后的结果相减&#xff0c;得到的输出图像&#xff0c;称为高斯不同&#xff08;DOG&#xff09;高斯不同是图像的内在特征&#xff0c; 在灰度图像增强丶角点检测中经常用到…

【MySQL】深入分析 锁机制(一)行锁 加锁规则 之 等值查询

文章目录前言一、共享锁&#xff08;S&#xff09;和排它锁&#xff08;X&#xff09;二、行锁的3种算法Record LockGap LockNext-key Lock三、加锁规则 之 等值查询分析数据准备3.1 聚集索引有匹配索引无匹配索引3.2 唯一索引有匹配索引无匹配索引3.3 普通索引有匹配索引无匹配…

游戏蓝牙耳机哪个好用?2022超低延迟游戏蓝牙耳机推荐

随着蓝牙耳机的快速发展&#xff0c;使用蓝牙耳机玩游戏的人也越来越多。那么&#xff0c;游戏蓝牙耳机哪个好用呢&#xff1f;当然是延迟越低的蓝牙耳机玩游戏的体验感会越好&#xff0c;我们都知道蓝牙耳机相对于有线耳机来说&#xff0c;或多或少会存在延迟。下面&#xff0…

一文讲解linux SMP Boot

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 介绍 SMP, Symmetric Multi-Processor&#xff0c;相对于单核处理器来说&#xff0c;SMP实现了真正严格意义上…

写出这个数

目录 1002:写出这个数 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 代码长度限制 时间限制 内存限制 思路: 1.求和 1.2代码: 2.找到sum的每一位 2.2代码: 3.汉语拼音输出数字 3.2代码: 完整代码: 时间复杂度: 总结: 题…

通过MQ进行系统对接

消息要有来源系统&#xff0c;消息类型&#xff0c;收到消息的应用&#xff0c;通过url取数据。做一个开关&#xff0c;用户可以自己选择方案一和方案二。 方案一&#xff1a;A公司的消息中存json&#xff0c;供应链直接获取json 方案二&#xff1a;通过A公司消息中的UrL&…