Nacos服务配置中心

本文介绍了配置中心的重要性,并详细讲述了Nacos配置中心的入门案例,包括如何新建配置、使用@RefreshScope注解实现配置动态刷新。同时,对Nacos的配置管理,特别是命名空间的使用进行了讲解,帮助理解如何在不同环境中隔离配置。

配置中心简介

背景分析

在平时除了写代码外,我们还需要配置很多的配置信息,这些配置信息呢一般都是写在包里面,但是这样的话配置信息和包就有了耦合,在后期我们需要去维护可变的配置信息的话会非常麻烦。假如系统正在运行,我们修改参数后需要重启服务器,就会导致短暂的服务停止,影响用户体验,甚至会造成用户流失。在这样的背景下,配置中心诞生了。

概述 

 配置中心最基础的功能就是存储一个键值对,用户发布一个配置(configKey),然后客户端获取这个配置项(configValue);进阶的功能就是当某个配置项发生变更时,不停机就可以动态刷新服务内部的配置项。

Nacos配置入门案例

业务描述

在sca-provider项目中添加一个Controller对象,例如ProviderLogController,基于此Controller中的方法演示日志级别的配置。

准备工作

1.创建ProviderLogController对象

package com.jt.controller;

import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//@Slf4j
@RestController
public class ProviderLogController {
    //创建一个日志对象
    private static Logger log =
            LoggerFactory.getLogger(ProviderLogController.class);

    @GetMapping("/provider/log")
    public String getLog(){
        log.trace("--trace--");
        log.debug("--debug--");
        log.info("--info--");
        log.warn("--warn--");
        log.error("--error--");
        return "log config test";
    }
}

2.在provider的pom文件中添加依赖

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

3.修改yml文件名字为bootstrap.yml并添加配置信息

server:
  port: 8082

spring:
  application:
    name: sca-provider
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
      config:
        server-addr: localhost:8848
        file-extension: yml

新建Nacos配置

1.启动Nacos  命令:startup.cmd -m standalone ,打开Nacos配置中心,新建配置:

2.后端运行服务器,浏览器访问自己设置的路径 ,例如:http://localhost:8082/provider/log,查看后端控制台输出的日志:

DEBUG 6184 --- [nio-8082-exec-1] com.jt.controller.ProviderLogController  : --debug--
INFO 6184 --- [nio-8082-exec-1] com.jt.controller.ProviderLogController  : --info--
WARN 6184 --- [nio-8082-exec-1] com.jt.controller.ProviderLogController  : --warn--
ERROR 6184 --- [nio-8082-exec-1] com.jt.controller.ProviderLogController  : --error--

@RefreshScope注解

nacos能感知系统内外部的配置变化,但是我们想从浏览器看到配置中心的配置变化的话就需要用到@RefreshScope注解,接下来实现一个简单的小案例:

1.我们在创建好的日志对象ProviderLogController上加上@RefreshScope注解:

其中,@RefreshScope的作用是在配置中心的相关配置发生变化以后,能够及时看到类中属性值的更新(底层是通过重新创建Controller对象的方式,对属性进行了重新初始化)。

2.我们在类中添加一个获取日志级别的属性和方法:

 @Value("${logging.level.com.jt:error}")
    private String logLevel;

    @GetMapping("/provider/log2")
    public String getLog2(){
        return "log level is " + logLevel;
    }

 3.启动服务,浏览器访问该地址,可以看到成功获取到配置中心的信息:

 

Nacos配置管理

概述

Nacos配置管理由三部分组成:

1.Namespace:命名空间,实现对不同的环境进行隔离(例如:开发环境,测试环境等)。

2.Group:实现多个服务器或者多个配置进行整合,归为一组。

3.DataId:一般对应一个配置文件或者一个配置集

 命名空间

Nacos中的命名空间一般是进行环境隔离,我们开始使用的空间都是默认的public空间:

1.创建新的命名空间

 

 

 2.在新的命名空间下创建新的配置,也可以直接克隆配置:

3.编辑开发环境下的配置信息:

 4.在module中bootstrap.yml中添加依赖:

spring:
  cloud:
    nacos:
      config:
        namespace: 这里写自己命名空间的id,都不一样

 5.运行服务器,访问日志地址,查看当前打印我的日志信息是否有变化

暂时写到这里!!

 

Nacos服务配置中心Nacos提供的一项功能,用于统一管理和读取微服务的配置信息。在微服务架构中,每个微服务都有自己的配置文件,而配置中心则负责集中管理这些配置文件。通过配置中心,我们可以方便地对各个微服务的配置进行统一维护和管理。 要使用Nacos配置中心功能,首先需要在服务端配置好服务的配置文件。在Nacos服务端中,可以创建不同的命名空间用于隔离开发环境,生产环境和测试环境等。默认情况下,Nacos提供了一个名为"public"的命名空间,如果没有单独配置命名空间,所有的配置信息都会在public命名空间中。 为了实现微服务客户端拉取配置中心的信息,需要在客户端项目中添加Nacos配置中心的依赖。具体依赖配置可以在项目的pom.xml文件中添加如下代码: ```xml <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> ``` 在客户端的bootstrap.yml文件中,需要配置Nacos配置中心的相关信息,包括Nacos注册中心地址、配置中心地址、文件扩展名和命名空间等。示例如下: ```yaml spring: cloud: nacos: discovery: server-addr: 39.100.116.73:80 config: server-addr: 39.100.116.73:8851 file-extension: yaml namespace: 507945ce-1b37-4d59-90aa-f2707fee0013 ``` 其中,`server-addr`指定了Nacos注册中心和配置中心的地址,`file-extension`指定了配置文件的扩展名,`namespace`指定了命名空间ID。 通过以上配置,客户端就可以从Nacos配置中心获取配置信息,并应用到相应的微服务中。这样,不同的微服务就可以共享配置中心中的配置文件,实现了配置的统一管理和读取。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值