SpringCloud-Alibaba之Nacos配置中心

SpringCloud-Alibaba之Nacos配置中心

【知识目标】

1.springcloud-alibaba-nacos配置中心
2.Nacos配置中心界面使用
3.Nacos配置热加载原理
4.Nacos多环境配置使用
5.Nacos名称空间的使用

  1. springcloud-alibaba-nacos配置中心

Nacos除了可以做注册中心,同样可以做配置管理来使用。

微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。

https://img-blog.csdnimg.cn/img_convert/428a2bfb6c87940fb2899ecfc08f8f65.png

  1. Nacos配置中心界面使用

Nacos 控制面板中添加配置文件

https://img-blog.csdnimg.cn/e23d079cda45492e9cd2b72885a0e434.png

https://img-blog.csdnimg.cn/f8306d436c3943b7bf5bda7ed8a84723.png

创建配置文件名为bootstrap.yml,注意是bootstrap而不是application。原因如下:

https://img-blog.csdnimg.cn/img_convert/bd2ac69c2c39285221df291431179494.png

Nacosspringcloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

SpringCloud-Alibaba之Nacos配置中心_第1张图片

必须的配置项spring.application.name,关联nacosdataID

spring.cloud.nacos.discovery.server-addr指定注册中心的地址,是用于微服务注册的,如果你不需要注册该服务,也可以去掉该项,并删除discovery依赖

spring.cloud.nacos.config.server-addr指定配置中心的地址file-extension指定配置中心中配置文件的格式

  1. Nacos配置热加载原理
  1. 增加了请求,获取预警库存,跟SpringCloud获取配置一样,使用@Value注解

SpringCloud-Alibaba之Nacos配置中心_第2张图片

启动应用,请求预警库存

SpringCloud-Alibaba之Nacos配置中心_第3张图片

如果我们想修改配置项的值,但应用不能重新启动;这个也比较简单,只需要在控制器类加入**@RefreshScope注解,可以使当前类下的配置支持动态更新。

SpringCloud-Alibaba之Nacos配置中心_第4张图片

nacos控制台更改配置项的值为30,再请求url如下

SpringCloud-Alibaba之Nacos配置中心_第5张图片

消费服务goods-consumer没有重新启动,值就会改变,达到了热更新。

  1. Nacos多环境配置使用

在机器不够的情况下,需要一套Nacos多个环境使用,那么在这里一般会使用多个Namespace(dev、test、staging、prod)来区分环境,然后再通过dataID来指定每个服务的配置文件,这样就可以每个环境的服务注册发现不会相互干扰,并且也不会用到其他环境的配置文件。

在Nacos中,本身有多个不同管理级别的概念,包括:Data IDGroupNamespace。只要利用好这些层级概念的关系,就可以根据自己的需要来实现多环境的管理。

  1. 使用Data ID与profiles实现
  1. 创建nacos-config-dev.yml配置文件

SpringCloud-Alibaba之Nacos配置中心_第6张图片

  1. 2、创建nacos-config-pro.yml配置文件

SpringCloud-Alibaba之Nacos配置中心_第7张图片

  1. 3、修改【nacos-config】项目中的【bootstrap.yml】文件

添加【spring.profiles.active】配置,如下所示:

spring:

  application:

    name: nacos-config

  cloud:

    nacos:

      discovery:

        server-addr: 127.0.0.1:8848 # Nacos作为服务注册中心地址

      config:

        server-addr: 127.0.0.1:8848 # Nacos作为配置中心地址

        file-extension: yml # 指定yaml格式的配置

  profiles:

    active: dev # 环境标识

访问:http://localhost:18203/getValue 如下图所示:

SpringCloud-Alibaba之Nacos配置中心_第8张图片

 将【spring.profiles.active】配置改为【pro】再次访问:

SpringCloud-Alibaba之Nacos配置中心_第9张图片

  1. 使用Group实现

GroupNacos中是用来对Data ID做集合管理的重要概念。

  1. 创建nacos-config-test.yml,Group为DEV_GROUP

SpringCloud-Alibaba之Nacos配置中心_第10张图片

  1.  2、创建nacos-config-test.yml,Group为PRO_GROUP

SpringCloud-Alibaba之Nacos配置中心_第11张图片

  1. 3、修改【nacos-config】项目中的【bootstrap.yml】文件

config下增加一条group的配置,指定配置文件所在的group,首先配置为【DEV_GROUP

spring:

  application:

    name: nacos-config

  cloud:

    nacos:

      discovery:

        server-addr: 127.0.0.1:8848 # Nacos作为服务注册中心地址

      config:

        server-addr: 127.0.0.1:8848 # Nacos作为配置中心地址

        file-extension: yml # 指定yaml格式的配置

        prefix: nacos-config-test

        group: DEV_GROUP

访问:http://localhost:18203/getValue 如下图所示: 

SpringCloud-Alibaba之Nacos配置中心_第12张图片

 将【group】配置成【PRO_GROUP】,再次访问:

https://img-blog.csdnimg.cn/accfcc0b00664f52a90f3244b584954f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5ZSv56m65Z-O,size_13,color_FFFFFF,t_70,g_se,x_16

其余方法可见:(10条消息) 【Nacos学习】四、Nacos配置的多环境管理_唯空城的博客-CSDN博客_nacos多环境配置

注:其余详情可见:(10条消息) 【Nacos学习】四、Nacos配置的多环境管理_唯空城的博客-CSDN博客_nacos多环境配置

  1. Nacos名称空间的使用

Nacos配置有几个重要的概念

这张图很重要。表述了namespacegroupservice/dataId的包含关系SpringCloud-Alibaba之Nacos配置中心_第13张图片

Nacos给的最佳实践表明,最外层的namespace是可以用于区分部署环境的,比如testdevprod等。同时,也有一个商业利用价值:多租户(以后会介绍)namespace为单位,给用户开辟使用空间

默认情况下,namespace=publicgroup=DEFAULT_GROUP

明白了这个数据模型后,新建若干个namespace

SpringCloud-Alibaba之Nacos配置中心_第14张图片

默认的服务列表都在public空间下面,分组名称为默认分组DEFAULT_GROUP

那如何创建一个新的命名空间呢,在nacos控制台左侧的命名空间标题,点开后,点击新建命名空间,可以看到弹出的新建命名空间窗口。

SpringCloud-Alibaba之Nacos配置中心_第15张图片

我们在开发过程中一般是用的dev环境 , 而在开发完成后我们则需要在test环境下运行 , 在发布时我们需要在prod环境下跑项目 , 我们需要用到nacos去创建dev , test , prod环境

https://img-blog.csdnimg.cn/20200915215946775.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDczNTkzMw==,size_16,color_FFFFFF,t_70#pic_center

https://img-blog.csdnimg.cn/2020091522052062.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDczNTkzMw==,size_16,color_FFFFFF,t_70#pic_center

https://img-blog.csdnimg.cn/2020091522061250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDczNTkzMw==,size_16,color_FFFFFF,t_70#pic_center

注:本作品皆为原创,如有雷同,纯属巧合!!!

你可能感兴趣的:(spring,cloud,java,spring,boot)