热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springCloudAlibabanacos配置中心初体验

文章目录nacos配置中心是什么nacosconfig和springcloudconfig对比常用配置中心对比SpringCloudAlibabaconfig特性支持配置的动态更新


文章目录

  • nacos 配置中心 是什么
  • nacos config 和 springcloud config 对比
  • 常用配置中心对比
  • Spring Cloud Alibaba config 特性
    • 支持配置的动态更新
    • 支持profile粒度的配置
    • 支持自定义 namespace 的配置
    • 支持自定义 Group 的配置
    • 支持自定义扩展的 Data Id 配置
  • 配置的优先级
  • 完全关闭配置
  • Spring Cloud Alibaba config 2021.0.1.0 升级指南
    • 升级步骤
    • 新特性及其使用
  • 快速入门



上篇介绍了
nacos作为注册中心的使用,这篇来看看nacos作为配置中心将怎么使用?


nacos 配置中心 是什么

Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。

Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。


nacos config 和 springcloud config 对比


  • springcloud config大部分场景结合git 使用, 动态变更还需要依赖Spring Cloud Bus 消息总线来通过所有的客户端变化.
  • springcloud config不提供可视化界面
  • nacos config使用长轮询更新配置, 一旦配置有变动后,通知Provider的过程非常的迅速, 从速度上秒杀springcloud

常用配置中心对比

在这里插入图片描述


Spring Cloud Alibaba config 特性


支持配置的动态更新

spring-cloud-starter-alibaba-nacos-config 也支持配置的动态更新,当配置修改时能获取到最新数据。
也可以通过配置 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新


支持profile粒度的配置

spring-cloud-starter-alibaba-nacos-config 在加载配置的时候,不仅仅加载了以 dataid 为 {spring.application.name}.{file-extension:properties} 为前缀的基础配置,还加载了dataid为 {spring.application.name}-{profile}.{file-extension:properties} 的基础配置。在日常开发中如果遇到多套环境下的不同配置,可以通过Spring 提供的 {spring.profiles.active} 这个配置项来配置。

spring.profiles.active=develop

profile 的配置文件 大于 默认配置的文件。 并且形成互补


支持自定义 namespace 的配置

用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。

在没有明确指定 ${spring.cloud.nacos.config.namespace} 配置的情况下, 默认使用的是 Nacos 上 Public 这个namespae。如果需要使用自定义的命名空间,可以通过以下配置来实现:

spring.cloud.nacos.config.namespace=b3404bc0-d7dc-4855-b519-570ed34b62d7

支持自定义 Group 的配置

Group是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP 。
配置分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和MQ_topic 配置。
在没有明确指定 ${spring.cloud.nacos.config.group} 配置的情况下, 默认使用的是 DEFAULT_GROUP 。如果需要自定义自己的 Group,可以通过以下配置来实现:

spring.cloud.nacos.config.group=DEVELOP_GROUP

支持自定义扩展的 Data Id 配置

Data ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名规则保证全局唯一性。此命名规则非强制。
通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。

spring.application.name=opensource-service-provider
spring.cloud.nacos.config.server-addr=127.0.0.1:8848# config external configuration
# 1Data Id 在默认的组 DEFAULT_GROUP,不支持配置的动态刷新
spring.cloud.nacos.config.extension-configs[0].data-id=ext-config-common01.properties# 2Data Id 不在默认的组,不支持动态刷新
spring.cloud.nacos.config.extension-configs[1].data-id=ext-config-common02.properties
spring.cloud.nacos.config.extension-configs[1].group=GLOBALE_GROUP# 3Data Id 既不在默认的组,也支持动态刷新
spring.cloud.nacos.config.extension-configs[2].data-id=ext-config-common03.properties
spring.cloud.nacos.config.extension-configs[2].group=REFRESH_GROUP
spring.cloud.nacos.config.extension-configs[2].refresh=true

可以看到:


  • 通过 spring.cloud.nacos.config.extension-configs[n].data-id 的配置方式来支持多个 Data Id 的配置。
  • 通过 spring.cloud.nacos.config.extension-configs[n].group 的配置方式自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • 通过 spring.cloud.nacos.config.extension-configs[n].refresh 的配置方式来控制该 Data Id 在配置变更时,是否支持应用中可动态刷新, 感知到最新的配置值。默认是不支持的。

多个 Data Id 同时配置时,它的优先级关系是 spring.cloud.nacos.config.extension-configs[n].data-id 其中 n 的值越大,优先级越高。
spring.cloud.nacos.config.extension-configs[n].data-id 的值必须带文件扩展名,文件扩展名既可支持 properties,又可以支持 yaml/yml。
此时 spring.cloud.nacos.config.file-extension 的配置对自定义扩展配置的 Data Id 文件扩展名没有影响。


通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。

通过自定义扩展的 Data Id 配置,既可以解决多个应用间配置共享的问题,又可以支持一个应用有多个配置文件。
为了更加清晰的在多个应用间配置共享的 Data Id ,你可以通过以下的方式来配置:

# 配置支持共享的 Data Id
spring.cloud.nacos.config.shared-configs[0].data-id=common.yaml# 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
spring.cloud.nacos.config.shared-configs[0].group=GROUP_APP1# 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
spring.cloud.nacos.config.shared-configs[0].refresh=true

可以看到:


  • 通过 spring.cloud.nacos.config.shared-configs[n].data-id 来支持多个共享 Data Id 的配置。
  • 通过 spring.cloud.nacos.config.shared-configs[n].group 来配置自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
  • 通过 spring.cloud.nacos.config.shared-configs[n].refresh 来控制该Data Id在配置变更时,是否支持应用中动态刷新,默认false。

配置的优先级

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

完全关闭配置

通过设置 spring.cloud.nacos.config.enabled = false 来完全关闭 Spring Cloud Nacos Config


Spring Cloud Alibaba config 2021.0.1.0 升级指南


  • 版本号
    从 2021.0.1.0 开始,SCA 版本将会对应 Spring Cloud 版本,
    前三位为 Spring Cloud 版本,最后一位为扩展版本

升级步骤

升级版本 (注意版本对应关系)

<dependencyManagement><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-dependenciesartifactId><version>2.6.3version><type>pomtype><scope>importscope>dependency><dependency><groupId>org.springframework.cloudgroupId><artifactId>spring-cloud-dependenciesartifactId><version>2021.0.1version><type>pomtype><scope>importscope>dependency><dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-alibaba-dependenciesartifactId><version>2021.0.1.0version><type>pomtype><scope>importscope>dependency>
dependencyManagement>

注意事项&#xff1a; spring-cloud-starter-alibaba-nacos-config 模块移除了 spring-cloud-starter-bootstrap 依赖&#xff0c;如果你想以旧版的方式使用&#xff0c;你需要手动加上该依赖&#xff0c;现在推荐使用 spring.config.import 方式引入配置

完成以上步骤就能无缝切换到 spring cloud alibaba 2021.0.1.0 版本


新特性及其使用


  • 支持 spring.config.import
    这里假设有一个配置文件(bootstrap.yml)&#xff0c;升级到新版本应该怎么配置呢

# bootstrap.yml
spring:cloud:nacos:config:name: test.ymlgroup: DEFAULT_GROUPserver-addr: 127.0.0.1:8848extension-configs:- dataId: test01.ymlgroup: group_01- dataId: test02.ymlgroup: group_02refresh: false

这两个配置是等价的

# application.yml
spring:cloud:nacos:config:group: DEFAULT_GROUPserver-addr: 127.0.0.1:8848config:import:- optional:nacos:test.yml # 监听 DEFAULT_GROUP:test.yml- optional:nacos:test01.yml?group&#61;group_01 # 覆盖默认 group&#xff0c;监听 group_01:test01.yml- optional:nacos:test02.yml?group&#61;group_02&refreshEnabled&#61;false # 不开启动态刷新- nacos:test03.yml # 在拉取nacos配置异常时会快速失败&#xff0c;会导致 spring 容器启动失败

注意事项:


  • 如果使用 spring.config.import 就不能使用 bootstrap.yml/properties 引入配置的方式了 !!!

  • 如果引入了 spring-cloud-starter-alibaba-nacos-config&#xff0c;并且使用 import 方式导入配置,项目启动时会自动检测是否引入了 nacos: 条目&#xff0c;如果没有 import nacos 条目&#xff0c;会出现如下错误&#xff1a;

The spring.config.import property is missing a nacos: entry
Action:
Add a spring.config.import&#61;nacos: property to your configuration.If configuration is not required add spring.config.import&#61;optional:nacos: instead.To disable this check, set spring.cloud.nacos.config.import-check.enabled&#61;false.

你可以手动通设置 spring.cloud.nacos.config.import-check.enabled&#61;false 关闭它&#xff0c;但是不建议这么做&#xff0c;这个功能可以帮助你检查是否引入多余依赖


  • 假如想保留以前的使用方式 (bootstrap引入配置)&#xff0c;你只需要添加依赖 spring-cloud-starter-bootstrap 依赖&#xff0c;不需要修改一行代码

快速入门

本次使用版本&#xff1a;


Spring Cloud Alibaba 版本Spring Cloud 版本Spring Boot 版本
2021.12021.0.12.6.4

  1. 启动nacos server
    安装教程请移步到windows系统 安装nacos服务注册与发现中心
  2. 引入依赖

<dependency><groupId>com.alibaba.cloudgroupId><artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>

  1. 修改配置文件

server:port: 8090spring:cloud:nacos:discovery:group: PROVIDER_GROUPconfig:group: PROVIDER_CONFIG_GROUPserver-addr: 127.0.0.1:8848config:import:- optional:nacos:provider-config-dev.yml # 监听 PROVIDER_GROUP :provider-config-dev.yml
# - optional:nacos:provider-config-dev.yml?group&#61;group_01 # 覆盖默认 group&#xff0c;监听 group_01:provider-config-dev.yml
# - optional:nacos:provider-config-dev.yml?group&#61;group_02&refreshEnabled&#61;false # 不开启动态刷新- nacos:provider-config-dev.yml # 在拉取nacos配置异常时会快速失败&#xff0c;会导致 spring 容器启动失败application:name: nacos-provider

  1. 创建配置类 及 dataId配置文件

&#64;Configuration
&#64;ConfigurationProperties(prefix &#61; "configdata")
public class UserConfig {private String name;private Integer age;// 省略get/set方法
}

provider-config-dev.yml:
这个配置文件其实可以不必在项目中配置&#xff0c;在nacos中配置即可&#xff0c;下面会说到

configdata:age: 21name: freeman

  1. 打开nacos管理后台&#xff0c;新建配置

  • 找到配置列表
    在这里插入图片描述
  • 点击&#xff0b;添加配置
    在这里插入图片描述
    Data ID: 对应着application.yml配置文件中spring.config.import属性中配置的文件名及其扩展名
    Group: spring.cloud.nacos.config.group属性对应的值
    格式&#xff1a;选择Data ID对应文件的扩展名
    配置内容: Data ID对应文件内容
    上述内容填写好之后&#xff0c;点击发布&#xff0c;在配置列表中就能看到刚刚填写的配置


推荐阅读
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
author-avatar
juliohong
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有