配置中心简介
背景分析
在平时除了写代码外,我们还需要配置很多的配置信息,这些配置信息呢一般都是写在包里面,但是这样的话配置信息和包就有了耦合,在后期我们需要去维护可变的配置信息的话会非常麻烦。假如系统正在运行,我们修改参数后需要重启服务器,就会导致短暂的服务停止,影响用户体验,甚至会造成用户流失。在这样的背景下,配置中心诞生了。
概述
配置中心最基础的功能就是存储一个键值对,用户发布一个配置(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配置中心的入门案例,包括如何新建配置、使用@RefreshScope注解实现配置动态刷新。同时,对Nacos的配置管理,特别是命名空间的使用进行了讲解,帮助理解如何在不同环境中隔离配置。
5万+

被折叠的 条评论
为什么被折叠?



