您现在的位置是:首页 > 正文

Nacos系列-Nacos配置中心

2024-04-01 03:24:46阅读 1


在这里插入图片描述

一:背景介绍

接下来本系列博客将会整理Nacos的相关知识,主要将会涉及到 服务注册与发现、配置管理、分布式系统个、高可用和容错性、配置文件格式和解析几个方面。今天就先从配置管理讲起,看看如何使用nacos的配置管理,它能够给我们带来什么~

二:什么是Nacos配置中心

  • Nacos(全名为阿里巴巴中间件 NACOS,前身为阿里巴巴注册中心和配置中心)是一款用于实现微服务架构中配置管理和服务发现的开源产品。
  • 作为云原生计算基金会(CNCF)下的一个孵化项目,Nacos提供了强大的配置管理和服务发现功能,广泛应用于微服务架构中,帮助开发者实现了配置的集中化管理、动态配置的实时更新以及服务的自动发现和注册。
  • 本文将详细介绍Nacos配置中心的原理以及如何使用。

三:Nacos配置中心原理

3.1构成

  1. Nacos配置中心的核心原理是将应用程序的配置信息集中存储在一个中心化的地方,供应用程序动态获取和更新。
  2. Nacos配置中心采用了类似于键值对(Key-Value)的方式来管理配置信息,其中Key用于唯一标识一个配置项,Value存储了对应的配置值。
  3. Nacos配置中心支持多种数据格式的配置,如Properties、YAML、JSON等,方便开发者根据实际需求选择合适的格式。

3.2 Nacos中心架构三个角色

Nacos配置中心的架构包括了三个主要的角色:配置提供者、配置消费者和配置中心服务器。

3.2.1 配置提供者

负责将应用程序的配置信息注册到Nacos配置中心,可以通过API或者配置文件的方式进行配置的发布和更新。

3.2.2 配置消费者

负责从Nacos配置中心获取配置信息,并在本地进行缓存,供应用程序在运行时读取和使用。

3.2.3 配置中心服务器

Nacos配置中心的核心组件,负责存储和管理所有的配置信息,并对外提供接口供配置提供者和配置消费者进行交互。

3.3 Nacos配置中心的重要功能

3.3.1 配置的动态更新

配置中心服务器可以实时监听配置的变更,并将更新后的配置信息推送给所有订阅了该配置的配置消费者,从而实现配置的动态更新,无需重启应用程序。

3.3.2 配置的版本管理

Nacos配置中心支持对配置的版本管理,可以根据需求进行配置的版本发布和回滚操作,方便管理配置的变更历史。

3.3.3 配置的命名空间和分组

Nacos配置中心支持配置的命名空间和分组功能,可以将配置信息按照不同的命名空间和分组进行隔离和管理,从而方便不同环境(如开发环境、测试环境、生产环境)的配置管理。

四: 如何使用Nacos的配置中心(以springBoot为例)

4.1 引入pom依赖

首先在我们的项目中引入对应的依赖,用来使用Nacos的配置中心

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

4.2 配置Nacos配置中心的相关属性

此处各项配置要结合自己搭建的对应的Nacos的各项设置进行,具体的搭建方式这里不做介绍
在这里插入图片描述

spring:
  application:
    name: serviceOne
  cloud:
    nacos:
      config:
        #配置中心地址
        server-addr: localhost:8848
        #命名空间
        namespace: service-hlz
        # 配置文件格式
        file-extension: yml
        # 配置文件名
        prefix: hlz

4.3 创建spring bean 用于读取Nacos配置中心的配置

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

@Component
@RefreshScope // 开启配置的动态刷新
public class AppConfig {
	//${example.config.key} 是配置属性的占位符,用于表示要读取的属性名。在实际应用中,可以将其替换为实际的属性名,例如 @Value("${server.port}") 表示读取名为 server.port 的属性值。
    @Value("${example.config.key:default_value}") // 通过Spring的@Value注解获取配置值
    private String configValue;

    public String getConfigValue() {
        return configValue;
    }
}

在这个示例中,我们使用了Spring Boot的**@Value注解来获取Nacos配置中心的配置值,并通过@RefreshScope注解来启用配置的动态刷新功能**,使得在配置更新时,应用程序能够自动刷新配置值。
我的配置文件示例
在这里插入图片描述

4.4应用程序中进行使用

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ExampleController {
    @Autowired
    private AppConfig appConfig;

    @GetMapping("/config")
    public String getConfigValue() {
        return "Config value: " + appConfig.getConfigValue();
    }
}

在这个示例中,我们通过自动注入AppConfig Bean,并在/config接口中返回从Nacos配置中心获取的配置值。
启动Spring Boot应用程序,访问/config接口可以获取Nacos配置中心的配置值。

4.5 概括

以上示例展示了如何在Spring Boot应用程序中使用Nacos配置中心,实现配置的动态刷新和获取。通过Nacos的配置中心,可以方便地集中管理和更新应用程序的配置,实现配置的灵活管理和部署。

五:总结&提升

通过本文的讲解,相信你已经对nacos的配置中心有了初步的了解,并且学会了如何简单的进行应用。接下来的博客会带你一步一步走近nacos

网站文章

  • 有关import sun.audio.AudioPlayer(或者其它文件)的问题

      今天白天在工作中使用Eclipse编译代码的时候,在播放声音的代码中报了这么一个错误   import sun.audio.AudioPlayer;   import sun.audio.AudioStream;   上面这两句都报“Access restriction: The type AudioPlayer is not accessible due to restrictio...

    2024-04-01 03:24:05
  • 将前端代码布置到服务器端后找不到静态资源

    将前端代码布置到服务器端后找不到静态资源

    将前端页面代码布置到服务器SpringMVC后,经常出现静态资源找不到的问题。 首先,应该设置springMVC,使其不要拦截静态资源。在springMVC的配置文件中添加如下代码:

    2024-04-01 03:23:59
  • 脚本forfiles(文件的查找和删除)

    脚本forfiles(文件的查找和删除)

    显示当前目录下的内容 不在要查找的目录上 -p:指定的路径 forfiles /p F:\data /m 查找的文件名掩码 forfiles /p F:\data -m *.pdf 查找不同类型的文件...

    2024-04-01 03:23:52
  • 动态播放幻灯片 计算机教案,小学信息技术《动态播放幻灯片-设置幻灯片文字的动画效果》教案...

    动态播放幻灯片 计算机教案,小学信息技术《动态播放幻灯片-设置幻灯片文字的动画效果》教案...

    一、教学目标1.能独立设置幻灯片文字的动画效果,合理选择动画效果。2.通过小组合作设置有个性的动画效果,锻炼学生的合作探究能力以及创新精神。3.通过本节课的学习,体会成功的喜悦,增强自信心,激发学生对...

    2024-04-01 03:23:10
  • storj简介

    storj简介

    概述Storj,这是来自美国StorjLabs公司旗下的项目,是在2014年首次被提出的,总共做了两次募资,第一次众筹了约50万美元,在上线测试版之后也就是2017年又进行了一次1CO,这次共筹得了约...

    2024-04-01 03:23:02
  • No value specified 报错

    今天遇到了 No value specified 这个问题:在控制台报了这样的错误:org.apache.commons.beanutils.ConversionException: No value specified at org.apache.commons.beanutils.converters.BigDecimalConverter.convert(BigDecimalC

    2024-04-01 03:22:56
  • 服务器安装nginx

    服务器安装nginx

    第二篇文章,安装nginx和ssl证书

    2024-04-01 03:22:50
  • 音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    音视频之——FFmpeg教程(二)——Windows10下搭建nginx-rtmp流媒体服务器

    前言前一篇我们知道了如何配置FFmpeg开发环境,接下来,就开始简单的推流吧。说道推流前,我们要知道常用的几个直播推流协议。直播推流协议在搭建服务之前先了解下目前主流的几个直播协议:RTMP:实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 ...

    2024-04-01 03:22:07
  • 引用数据类型_Java基础数据类型和引用类型的区别

    引用数据类型_Java基础数据类型和引用类型的区别

    一、数据类型Java中的数据类型分为两大类,基本数据类型和引用数据类型。1、基本数据类型基本数据类型只有8种,可按照如下分类 ①整数类型:long、int、short、byte ②浮点类型:float、double ③字符类型:char ④布尔类型:booleanNo.数据类型大小/位可表示数据范围默认值1byte(字节型)8-128~12702short(短整型)16-32768~32...

    2024-04-01 03:21:59
  • MySQL查询优化

    MySQL查询优化

    表数据皆为随机生成,身份证号、手机号、姓名、微信号等若有相同,纯属巧合。生成的数据仅用于测试说明问题,不必理会合理性。2.1.1、【用户表】t_user数据量:150w。

    2024-04-01 03:21:52