IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Nacos配置中心 -> 正文阅读

[Java知识库]Nacos配置中心

一、使用场景

  1. 当配置信息发生变动时,传统修改配置信息后,需要重新重启服务器才可以生效。
  2. 大量应用配置修改时,需要一个个修改配置,无法统一修改,且没有办法回溯配置版本。
  3. 配置没有区别环境,分组,可能因为事务将开发测试配置发布到生产环境。
  4. 等等问题啊…以上问题使用Nacos-Config都可以解决。

二、开箱使用

以Nacos官网中快速开始为例子 Nacos-config

1. 启动好Nacos服务,添加配置

默认存在配置空间public,直接新增配置,命名配置ID,配置GROUP保存即可。

# 配置内容
user.name = wql
user.name = 15

在这里插入图片描述

2. 配置Spring Boot

2.1 引入依赖
<!--nacos config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.2 配置bootstrap.properties

Nacos Server配置中心指定必须在bootstrap.properties中配置,配置信息如下
在这里插入图片描述

spring:
  application:
    # 匹配Nacos中配置列表的Data Id
    name: com.wql.order
  cloud:
    nacos:
      server-addr: 192.168.31.233:8847
      username: nacos
      password: nacos
      config:
        # 命名空间ID,默认public
        namespace: public
        # 配置文件默认扩展名,默认Properties
        file-extension: Properties
        # Nacos动态感知配置文件变化,默认true
        refresh-enabled: true
        # 配置文件Group,默认DEFAULT_GROUP
        group: DEFAULT_GROUP
  • application.name :应用名称,这个对应在Nacos中填写的配置Data ID,针对配置Data ID与应用名称不同情况后面介绍。
  • server-addr : Nacos服务地址
    username : 账号
    password : 密码
  • namespace :命名空间。这里填写为默认的命名空间public,可以在Nacos中新增命名中间,新增时需要注意这里填写的是命名空间的ID
  • file-extension:文件扩展名,默认Properties,可选YAML,XML等。
  • refresh-enabled:Nacos动态感知配置文件变化,默认true,如果为false,配置中心数据修改将不会通知客户端。
  • group:配置文件组,默认DEFAULT_GROUP,可以针对业务进行分组,如订单模块,库存模块等。
2.3 验证数据

写一个端口,将获取配置文件的信息返回,然后动态修改Nacos配置中心的配置信息后,查看客户端是否动态获取到配置信息。

@RestController
@RequestMapping("/config/")
@RefreshScope
public class ConfigController {
    @Value("${user.name}")
    String name;

    @RequestMapping("getName")
    public String getName() {
        System.out.println("Name:" + name);
        return name;
    }
}
  • @RefreshScope:用来刷新配置信息,如果缺少,修改Nacos配置中心后,客户端已经引用到配置中的数据不会被刷新。

3. 配置不同于应用名称的Nacos配置

上面配置中Nacos配置中心的Data_Id必须要和应用名称相同,如果不同时,客户端会无法读取,这时候我们可以通过以下方式来配置:

spring:
  application:
    # 匹配Nacos中配置列表的Data Id
    name: com.wql.order
  cloud:
    nacos:
      server-addr: 192.168.31.233:8847
      username: nacos
      password: nacos
      config:
        # 命名空间ID,默认public
        namespace: 91302ae5-45b9-43f4-b9d3-702b3ccfecde
        # 配置文件默认扩展名,默认Properties
        file-extension: yaml
        # Nacos动态感知配置文件变化,默认true
        refresh-enabled: true
        # 配置文件Group,默认DEFAULT_GROUP
        group: order
        #####################不同的Data Id的配置####################################
        shared-configs:
          - data-id: com.wql.common.properties
            refresh: true
            # 默认DEFAULT_GROUP
            group: DEFAULT_GROUP

可以看到这里新建了一个Data Id为com.wql.common.properties的配置,这里使用的了共享配置shared-configs,在下面以 “-” 分隔,相当于数组,每一个 “-” 意味着一个配置,每一个配置都可以自定义命名空间、扩展名、配置组等这些信息。另外还可以用下面数据形式来配置,效果等同于 “-” 。

spring:
  application:
    # 匹配Nacos中配置列表的Data Id
    name: com.wql.order
  cloud:
    nacos:
      server-addr: 192.168.31.233:8847
      username: nacos
      password: nacos
      config:
        # 命名空间ID,默认public
        namespace: 91302ae5-45b9-43f4-b9d3-702b3ccfecde
        # 配置文件默认扩展名,默认Properties
        file-extension: yaml
        # Nacos动态感知配置文件变化,默认true
        refresh-enabled: true
        # 配置文件Group,默认DEFAULT_GROUP
        group: order
        #####################不同的Data Id的配置####################################
        shared-configs[0]:
          data-id: com.wql.common.properties
          refresh: true
          # 默认DEFAULT_GROUP
          group: DEFAULT_GROUP

4. 配置的优先级

Spring Cloud Alibaba Nacos Config 目前提供了三种配置能力从 Nacos 拉取相关的配置。

A: 通过 spring.cloud.nacos.config.shared-configs[n].data-id 支持多个共享 Data Id 的配置

B: 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的方式支持多个扩展 Data Id 的配置

C: 通过内部相关规则(应用名、应用名+ Profile )自动生成相关的 Data Id 配置

当三种方式共同使用时,他们的一个优先级关系是:A < B < C

5. 客户端配置多套环境配置

在实际开发中,通常对配置会有dev、test、prod等配置,通过spring.profiles.active来指定配置,如下意味着应用会使用配置文件application-dev.yml。
在这里插入图片描述
这种情况强大的Nacos一样可以解决,我们只需要将原本的Data Id 即 com.wql.order修改为:
com.wql.order-dev.yaml即可,-dev.yaml以为着 - active.配置文件类型,比如应用使用prod配置文件即spring.profiles.active为prod,文件类型为properties,那么Nacos配置Data Id为 com.wql.order-prod.properties

三、对比常用的配置中心

spring cloud configappllonacos
开源时间2014.92016.52018.6
配置实时推送支持(依赖Spring Cloud Bus)支持(HTTP长轮询1s内)支持(HTTP长轮询1s内)
版本管理支持(Git)自动管理自动管理
配置回滚支持(Git)支持支持
灰度发布支持支持待支持
权限管理支持支持待支持
多集群多环境支持支持支持
监听查询支持支持支持
多语言仅支持JavaGo、C++、Python、Java、.Net、OpenAPIPython、Java、NodeJs、OpenAPI
分布式高可用最小集群数量Config-Server*2+Git+MQ=5Config2+Admin3+Portal*2+MySql=8Nacos*3+MySql=4
通信协议HTTP和AMQPHTTPHTTP
数据一致性Git保证数据一致性,Config-Server从Git读取数据数据库模拟消息队列,Apollo定时读消息HTTP异步通知
单机读(tps)7 (限流所制)900015000
单机写(tps)5 (限流所制)11001800
3节点读21 (限流所制)2700045000
3节点写5 (限流所制)33005600

从表格中可以看出Nacos所支持功能与Apollo对比几乎无差别,但性能上Nacos优于Apollo。Nacos与Spring Cloud Config对比有以下主要优点:
① Spring Cloud Config大部分场景结合Git使用,动态变更还需要依赖Spring Cloud Bus消息总线来通知所有客户端变化。
② Spring Cloud Config不提供可视化操作界面。
③ Nacos Config使用长轮询更新配置,一旦配置发生变动,通知Provider的过程非常的迅速,速度上秒杀Spring Cloud Config。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:02:36  更:2022-05-07 11:04:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:29:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码