SpringCloud Nacos作为配置中心

一、概述:

在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地和实际的物理运行环境进行适配。配置管理一般包含在系统部署的过程中,由系统管理员或者运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。Nacos可以作为配置中心,存储和管理配置信息

二、Nacos作为配置中心的基础配置:

快速开始步骤:

在这里插入图片描述

(1)新建模块:cloudalibaba-config-nacos-client3377

(2)pom:

<dependencies>
        <!--alibaba-nacos-discovery-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--alibaba-nacos-config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--web两件套-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--指标监控actuator-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <version>2.2.2.RELEASE</version>
        </dependency>
        <dependency><!--热部署-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

(3)yml编写,这里需要两个yml
在这里插入图片描述
3.1 bootstrap.yml:

#nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client #微服务名称:nacos配置中心的客户端
  cloud:
    nacos:
      discovery: #服务发现的配置
        server-addr: localhost:8848 #nacos服务注册中心,即将此服务注册进nacos
      config: #配置中心的配置
        server-addr: localhost:8848 #nacos作为配置中心的地址
        file-extension: yaml #官方指定以.yaml结尾的文件作为文件扩展名,file-extension:文件扩展名的意思

在这里插入图片描述
3.2 application.yml:

spring:
  profiles: #特征文件/配置文件
    active: dev  #表示开发环境

(4)主启动类:com.fan.springcloud.NacosConfigClientMain3377

package com.fan.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication //SpringBoot应用
@EnableDiscoveryClient //开启服务发现客户端
public class NacosConfigClientMain3377 {
    public static void main(String[] args) {
        SpringApplication.run(NacosConfigClientMain3377.class,args);
    }
}

(5)业务类controller: controller.ConfigClientController

package com.fan.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RefreshScope //这个和config+bus总线那边的注解一样,支持nacos的动态刷新功能
public class ConfigClientController {
    @Value("${config.info}")//注入配置文件中config.info的信息
    private String configInfo;
    
    @GetMapping(value = "/config/info")
    public String getConfigInfo(){
        return configInfo;
    }
}

注意:这里通过spring cloud 原生注解@RefreshScope 实现配置的自动更新

Data ID 格式命名规则:
在这里插入图片描述

(6)测试:

(6.1)在nacos的网页控制台/仪表盘 创建在线配置文档:

在这里插入图片描述
设置data ID(数据id,这里注意命名格式要符合规定): nacos-config-client-dev.yaml :

config:
  info: config信息用于dev环境,来自nacos配置中心,dataid:nacos-config-client-dev.yaml,版本=1

在这里插入图片描述

然后发布即可:

总结:
在这里插入图片描述

在这里插入图片描述
(6.2)启动微服务并测试:注意,在线配置文件这的后缀拓展名必须是yaml,写成yml报错
在这里插入图片描述
测试结果:localhost:3377/config/info

在这里插入图片描述

在这里插入图片描述

三、Nacos作为配置中心-分类配置:

在这里插入图片描述

3.1 开发中的多环境对项目管理,一般遇到的问题有如下:

在这里插入图片描述

3.2 Nacos的图像化管理界面:

1.配置管理

在这里插入图片描述
2.命名空间

在这里插入图片描述

3.3 分类配置的设计思想:Namespace+Group+Data ID :

SpringCloud Alibaba Nacos Config配置中心有三种配置方法,分别为:

1.Data ID配置方案

2.Group配置方案

3.NameSpace配置方案
    在这里插入图片描述

  • NameSpace —— Nacos默认的命名空间是public, Namespace主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个Namespace,不同的Namespace之间是隔离的。

  • Group —— Group默认是DEFAULT_GROUP,Group可以把不同的微服务划分到同一个分组里面去

  • Service/DataId —— Service就是微服务。一个Service可以包含多个Cluster (集群) ,Nacos默认Cluster是DEFAULT,Cluster是对指定微服务的一个虚拟划分。比方说为了容灾,将Service微服务分别部署在了杭州机房和广州机房,这时就可以给杭州机房的Service微服务起一个集群名称(HZ),给广州机房的Service微服务起一个集群名称(GZ) ,还可以尽量让同一个机房的微服务互相调用,以提升性能。

在这里插入图片描述

在这里插入图片描述

2.4 分类配置的案例:

SpringCloud Alibaba Nacos Config配置中心有三种配置方法,分别为:

1.Data ID配置方案

2.Group配置方案

3.NameSpace配置方案

在这里插入图片描述

在这里插入图片描述

1.Data ID方案:

通过spring.profiles.active属性就能进行多环境下配置文件的读取
修改application.yml配置文件:
在这里插入图片描述

然后在nacos网页控制台新建三个不同的Data Id :
(注意,这里为了演示Data Id ,所以我们会在相同的public下的同一个默认组下使用不同的Data Id名字):

在这里插入图片描述

在这里插入图片描述

类似的,我们用以上方式创建nacos-config-client-pro.yaml,nacos-config-client-test.yaml
在这里插入图片描述
最终效果:
在这里插入图片描述

然后我们想使用哪个配置文件,直接在application,yml中激活它就可,如图使用test配置文件,则对应nacos-config-client-test.yaml

在这里插入图片描述

测试:localhost:3377/config/info

在这里插入图片描述
发现我们远程成功读取到了nacos中的配置文件。

Data Id总结:
第一步:application.yml中修改并激活要使用的环境。
第二步:nacos网页控制台在配置列表新建同一个组下的不同data id ,data id的命名规则请遵循以下方式:三部分构成:

spring.application.name的值-spring.profile.active的值.配置文件的扩展名



2.Group配置方案:

通过Group实现环境区分:原理:相同的Data id名称,但是让他们位于不同的组,来实现隔离使用.
group: DEV_GROUP #指定所属分组,这里相当于切换配置文件的开关

在这里插入图片描述

bootstrp.yml:

#nacos配置
server:
  port: 3377

spring:
  application:
    name: nacos-config-client #微服务名称:nacos配置中心的客户端
  cloud:
    nacos:
      discovery: #服务发现的配置
        server-addr: localhost:8848 #nacos服务注册中心,即将此服务注册进nacos
        
      config: #配置中心的配置
        server-addr: localhost:8848 #nacos作为配置中心的地址
        file-extension: yaml #官方指定以.yaml结尾的文件作为文件扩展名,file-extension:文件扩展名的意思
        group: DEV_GROUP  #指定所属分组,指定所属分组,这里相当于切换配置文件的开关

在这里插入图片描述
这里新建三个不同的组:DEV_GRUOP,TEST_GRUOP,PRO_GRUOP

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

在这里插入图片描述

结果预览:
在这里插入图片描述

启动微服务并测试:profile环境不变,group更换:
group: DEV_GROUP #指定所属分组,这里相当于切换配置文件的开关,TEST_GROUP,PRO_GROUP两个值可选

在这里插入图片描述
组开关切换测试:

在这里插入图片描述

切换到测试组:
在这里插入图片描述
然后测试:成功读取:
在这里插入图片描述
Group配置方案总结:
第一步:application.yml中active激活的环境不用再来回切换变动了。用一个固定的。
第二步:修改bootstrap.yml中config.group,设置几个不同的备用组,和nacos网页控制台的配置列表中的组对应。
第三步:通过手动改变组名来实现切换不同的配置文件内容。(同一个配置文件的唯一data id ,但是内容不同)

3.NameSpace配置方案:

通过指定namespace进行区别

第一步:新建命名空间:
这里的命名空间类似于一个公司,然后公司里面又分好几个项目组,组内有好多配置(如组内开发的,测试的,运维的)
在这里插入图片描述
新建命名空间:这里我们创建了两个,dev和test,命名空间的id我们不填,让其自动生成。

在这里插入图片描述

在这里插入图片描述

第二步:按照域名配置填写:

2.1 application.yml配置内容:
在这里插入图片描述

2.2 创建配置文件:

在这里插入图片描述
(1)进入test命名空间内(类似进入一个公司),创建一个配置文件:nacos-config-client-properties.yaml,组名TEST_GROUP

在这里插入图片描述

nacos-config-client-properties.yaml配置文件内容:

config:
    info: 我是命名空间test的配置文件,属于TEST_GROUP组,版本1

(2)进入dev命名空间内(类似进入一个公司),创建一个相同的配置文件:nacos-config-client-properties.yaml,组名也相同,组名TEST_GROUP
在这里插入图片描述
nacos-config-client-properties.yaml

config:
    info: 我是dev公司/命名空间的配置文件,我属于TEST_GROUP组,版本1

解释:相当于两家公司,一个是test公司,一个是dev公司,两家公司都有一个组叫TEST_GROUP组,并且该组内有相同的配置文件的名字nacos-config-client-properties.yaml,那只能通过公司名,(即命名空间)来区分了这个文件

2.3 修改bootstrap.yml配置文件:

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

切换命名空间的流水号后测试:发现成功读取到不同命名空间下的文件:

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

四、Nacos集群和持久化配置:

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

在这里插入图片描述

vip:虚拟映射ip

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

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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
然后测试mysql存储的数据:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

下载nacos:
在这里插入图片描述

拷贝文件到:
在这里插入图片描述
集群配置步骤:

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
cluster.conf内容:
在这里插入图片描述

在这里插入图片描述
第一步:
在这里插入图片描述
第二步:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

弄一个备份:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值