nacos分布式配置中心搭建与使用

前言

在使用springcloud的时候,提供了分布式配置中心的功能,可以通过git、gitlab、SVN等对微服务项目中用到的配置文件进行统一管理了

nacos基于springcloud也提供了一套分布式配置的组件,使用nacos提供的配置组件也可以做到对项目中使用到的配置文件做统一管理,并且支持不同环境动态切换,动态刷新,界面操作管理,相比使用git的配置中心从使用上来说更加方便更容易运维

nacos的配置文件的管理控制台和注册中心在一个管控台接口,如下图所示

在这里插入图片描述

使用与搭建

1、添加pom依赖

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

2、引入配置文件

spring:
  application:
    name: service-consumer

  cloud:
    nacos:
      register-enabled: true
      discovery:
        server-addr: IP:8848

使用nacos的配置中心的功能非常简单,只需要把本地的配置文件移动到nacos上即可,首先我们创建一个名字叫做:service-consumer-config.yaml的配置文件,如下
在这里插入图片描述
在下图黑色的编辑区域选择yaml格式的文件把项目中的配置文件粘贴进去即可

在这里插入图片描述

修改完毕后发布即可,然后就可以在配置列表中看到刚刚自己添加的这个配置文件,

3、本地引入nacos配置文件

在springcloud中,我们使用git或者svn做配置中心的时候,大家一定还记得,项目中要引用远程的配置文件,以配置中心的IP加服务名导入,一般放在配置中心的文件都是公共的配置,如果项目还有自己的配置要使用,怎么办呢?我们知道,springboot对配置文件的加载是有一定的优先级的,但优先级最高的是叫做bootstrap.yml的这个配置文件

因此在使用nacos组做配置管理的时候,公共配置放在nacos中,项目要引用配置中心的文件,需要通过bootstrap.yml这个文件去引入,因此bootstrap.yml配置如下:

server.port=8082
spring.application.name=service-consumer-config
spring.cloud.nacos.config.server-addr=IP:8848
spring.cloud.nacos.config.file-extension=yaml

4、测试配置
在刚刚创建的配置文件里面添加一段配置,待会儿我们在程序中测试一下是否能读到这段配置
在这里插入图片描述

	
	@Value("${user.name}")
    private String userName;

    //http://localhost:8082/getConfigName
    @GetMapping("/getConfigName")
    public String getConfigName(){
        return userName;
    }

启动函数

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ConsumerApp {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApp.class,args);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

}

启动程序,浏览器访问:http://localhost:8082/getConfigName,可以看到,成功访问到了我们的配置文件
在这里插入图片描述

nacos多环境配置文件使用

在实际开发中,经常面临多环境的切换问题,开发、测试、生产等都是使用不同的配置文件,在nacos中,也提供了对分布式环境下多配置文件的管理功能,使用该功能,可以方便的对开发中的不同环境的配置文件进行切换

首先在nacos管控台上,我们创建两个生产端服务使用到的配置文件,比如这里的两个配置文件分别叫做:service-provider-config.yaml 和 service-provider-config-prod.yaml,命名的规范一般遵照约定的习惯,通过不同的后缀名做区分,比如test代表测试,prod代表生产等在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在两个配置文件中,我们分别加入了两段配置代码方便一会儿做演示,nacos上的配置到这里结束了,下面我们看具体的程序配置

在程序中资源目录下面,我们创建两个不同的配置文件用于区分不同的环境,只需要在配置文件中加入如下代码即可,
在这里插入图片描述
通过下面的这个配置用于在程序启动的时候区分不同的环境,其他的配置保持不变

spring.profiles.active=prod

测试程序:

	@Value("${env.name}")
    private String envName;

    @GetMapping("/getEnvName")
    public String getEnvName(){
        return envName;
    }

首先使用开发的环境测试配置文件,启动程序,浏览器访问:http://localhost:8070/getEnvName,开发环境的配置成功读取到了
在这里插入图片描述

再将程序以prod的方式启动,可以通过打jar包启动,或者直接在idea中进行手动指定,然后启动程序
在这里插入图片描述

浏览器访问同样的地址,成功读取到了配置信息

在这里插入图片描述

总的来说,使用nacos作为配置中心进行配置文件的管理还是很方便的,假如我们在控制台手动修改了配置或者添加了新的配置,如果需要程序能够快速读取到,只需要在controller中加入注解@RefreshScope即可,这里我已经测试过了,有兴趣的同学可以自己尝试一下,相比使用springcloud的这个动态刷新配置功能要方便不少
在这里插入图片描述

本篇大致分享了一下如何在程序中使用nacos的分布式配置管控台的使用以及在程序中的集成,希望对看到的小伙伴有用,最后,感谢观看!

发布了193 篇原创文章 · 获赞 113 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/zhangcongyi420/article/details/103262285