首页 > 其他分享 >Nacos配置中心基本概念及使用

Nacos配置中心基本概念及使用

时间:2022-12-17 23:33:18浏览次数:62  
标签:基本概念 name 配置 nacos Nacos config public

Spring Cloud Alibaba从2018年开源以来,得到了众多软件爱好者的关注,尤其是在Spring Cloud Netflix一些组件处于停更后。Spring Cloud Alibaba提供了许多分布式环境下的重要特性,如:分布式事务。
本文主要讲解Nacos作为配置中心的相关特性。

一、背景

在项目研发过程中,少不了一些基础配置,不同环境的一些配置可能是不一样的,如:数据源、消息服务器等。为了避免将所有配置放置在项目中,也为了配置的安全性,通常会使用外部的配置中心来管理这些配置信息,Spring Cloud Netflix提供了Config组件,本文主要介绍Spring Cloud Alibaba提供的配置中心组件:Nacos,官网地址:https://nacos.io

二、基础概念

Nacos中有namespace、Group和DataId的概念,
namespace:命名空间,租户粒度的配置隔离,通常用来区分不同环境。默认public
Group:对配置集进行分组,从而区分 Data ID 相同的配置集,常用于不同的应用使用相同的配置。默认DEFAULT_GROUP
Data Id: 某个配置集的id,一个系统或应用可以包含多个配置集。
整体结构如下:

三、基本使用

1. 服务端配置

首先,需要下载Nacos服务端,这里以Windows nacos-server-2.2.0版本为例,下载地址:https://github.com/alibaba/nacos/releases
下载成功后,解压到本地某个目录,然后使用命令控制台启动(单机模式),命令如下:
startup.cmd -m standalone
启动成功后,可以通过浏览器访问http://127.0.0.1:8848/nacos,页面显示如下:

通过内置的用户名/密码:nacos/nacos 可以访问UI界面。
这里使用自定义的namespace(nacos-config),如下:

然后在该namespace下新建一个配置项nacos-config.yml,Group就使用默认的DEFAULT_GROUP

配置文件内容如下:

name: Michael
title: Nacos Configuration
user:
    name: Michael
    age: 18

2. 客户端配置

以Maven项目为例,项目依赖如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.0.RELEASE</version>
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2.2.7.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
</dependencies>

在classpath下新建bootstrap.yml文件

不能使用application.yml配置Nacos配置,因为bootstrap会优先application进行加载,加载顺序会对程序的行为产生影响。

内容如下:

spring:
  application:
    name: nacos-config-client

  cloud:
    nacos:
      config:
        serverAddr: 127.0.0.1:8848
        namespace: nacos-config
        group: DEFAULT_GROUP
        fileExtension: yml
        extension-configs[0]:
          dataId: nacos-config.${spring.cloud.nacos.config.fileExtension}
          refresh: true

启动类如下:

@SpringBootApplication
public class ConfigApp {
    public static void main(String[] args) {
        ConfigurableApplicationContext ac = SpringApplication.run(ConfigApp.class, args);
        Environment env = ac.getEnvironment();
        System.err.printf("Application Start....user.name=%s, user.age=%s\n", env.getProperty("user.name"), env.getProperty("user.age"));
    }
@RestController
@RefreshScope
public class HelloConfigController {
    @Value("${title}")
    private String title;

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

    @GetMapping("/hello")
    public String hello() {
        return "Hello " + name + " ,Title: " + title;
    }
}

配置@RefreshScope可以动态监听Nacos配置项的变更,可以直接获取最新的配置项。

在变更Nacos配置项时,也能触发回调方法,如:@PostConstruct@PreDestroy修饰的方法

@RestController
@RefreshScope
public class HelloConfigController {
    @Value("${title}")
    private String title;

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

    @GetMapping("/hello")
    public String hello() {
        return "Hello " + name + " ,Title: " + title;
    }

    @PostConstruct
    public void init() {
        System.out.printf("Controller init......name:%s\n", name);
    }

    @PreDestroy
    public void destroy() {
        System.out.printf("Controller destroy......name:%s\n", name);
    }
}

当Nacos配置项中name属性变更后,则会收到销毁的回调消息,如下:

读取新的配置属性,比如访问http://127.0.0.1:9002/hello后,也会输出初始化的回调信息:

标签:基本概念,name,配置,nacos,Nacos,config,public
From: https://www.cnblogs.com/vielat/p/16989332.html

相关文章

  • Ubuntu安装配置 Samba与 Windows 共享文件
    前言我们经常会遇到一边使用linux系统时候一边使用windows,这个时候会产生很多需要传输的文件,当然我们可以使用sshscp进行传输,或者使用FileZilla、Winscp等工具,但是这些还......
  • Eclipse开发配置
    1.编码配置有些导入Eclipse项目之后,会出现源码里面中文乱码问题,这时候需要我们修改一下Eclipse的编码设置。1.1输出中文乱码问题点击Windows→General→Workspace......
  • Java环境配置
    Java环境搭建jdk8的下载与安装下载下载官网:JavaDownloads|Oracle下载版本:jdk-8u321-windows-x64.exe百度网盘链接:https://pan.baidu.com/s/1A8D0T0S8cSyz9aQ2ANz......
  • Viper读取配置文件
    写项目时总会需要配置文件,Go语言中可以使用viper来读取配置文件。goget"github.com/spf13/viper"例子,现在有一个conf.yamlname:"helloViper"port:8080mode:"d......
  • Postman配置多环境请求地址
    在使用Postman测试接口时,一个项目往往有多个环境(测试、正式等),请求不同环境的接口一般只是IP和端口不一样。这时候我们可以定义多个环境变量,在接口地址中进行引用。一、添......
  • 在springboot项目里配置ReactiveRedisTemplate
    配置pom.xml: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis-reactive</artifactId> </dependency> ......
  • vscode配置
    VScode配置1.开发1.Ctrl+P:显示搜索栏以搜索文件(Mac:Cmd+P)我们经常在多个文件进行切换,这个快捷键可以帮助我们快速找到我们想到的文件。2.Ctrl+Shift+P......
  • springboot配置自定义objectMapper
      packagecom.my.config;importcom.fasterxml.jackson.annotation.JsonInclude;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackso......
  • maven打包附带依赖的配置
    <build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><de......
  • springboot启动读取配置文件过程&自定义配置文件处理器
        最近看到看到spring的配置文件放在了resources/config/application.yal文件内部,第一次见。就想的研究下,springboot启动读取配置文件的过程。1.启动过程org.spring......