Nacos服务配置中心

配置中心概述

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

Nacos配置入门

业务描述

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

  1. 创建ProviderLogController对象
@RestController
@Slf4j          //lombok中的这个注解用于告诉lombok,为我们类中创建一个org.slf4j.Logger对象
@RefreshScope   //此注解描述类时,用于告诉系统底层,当配置中心内容发生变化,此对象要重新构建
public class ProviderLogController {

    //private static final Logger log =
            //LoggerFactory.getLogger(ProviderLogController.class);

    @GetMapping("/provider/log/doLog01")
    public String doLog01(){
    
        System.out.println("==doLog01==");
        log.trace("==trace==");
        log.debug("==debug==");
        log.info("==info==");
        log.warn("==warn==");
        log.error("==error==");

        return "test log 01";
    }
  • 该类中,可以自己手动创建log对象,但是要注意log对象在哪个类中创建getLogger方法中的参数就要传入哪个类的字节码对象。
  • 我们也可以使用添加**@Slf4j**注解的方式为我们的类中创建一个日志对象。
    Slf4j有五个级别的log level可供选择,级别由上到下由低到高,优先级高的会被打印出来
    其中:
    debug:简单来说,对程序调试有利的信息都可以使用debug输出。
    info:对用户有用的信息,比如最常见的打印接口入参和反参。
    warn:可能会导致错误的信息,比如某个对象可能为null的场景判断。
    error:顾名思义,发生错误的地方,最常见的catch代码块中的日志。
    @RefreshScope 对nacos配置中心而言,有系统内部对配置变化的感知,还有外部对配置的感知,该注解描述类时,用于告诉系统底层,当我们的配置中心内容发生改变时,我们的该对象也要重新构建,使我们系统在浏览器中能看到日志级别的变化。
  1. 在sca-provider项目中添加如配置依赖
  <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
  </dependency>

  1. 将项目sca-provider的application.yml的名字修改为bootstrap.yml(启动优先级最高),并添加配置中心配置
spring:
  application:
    name: sca-provider
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yml 

新建Nacos配置

打开nacos配置中心新建配置
在这里插入图片描述
其中,Data ID的值要与bootstrap.yml中定义的spring.application.name的值相同(服务名-假如有多个服务一般会创建多个配置实例,不同服务对应不同的配置实例)。
在这里插入图片描述

小结

  • 配置中心一般都会配置什么内容?(可能会经常变化的配置信息,例如连接池,日志、线程池、限流熔断规则)
  • 什么信息一般不会写到配置中心?(服务端口,服务名,服务的注册地址,配置中心)
  • 项目中为什么要定义bootstrap.yml文件?(此文件被读取的优先级比较高,可以在服务启动时读取配置中心的数据)
  • Nacos配置中心宕机了,我们的服务还可以读取到配置信息吗?(可以从内存,客户端获取了配置中心的配置信息以后,会将配置信息在本地内存中存储一份.)
  • 微服务应用中我们的客户端如何获取配置中心的信息?(我们的服务一般首先会从内存读取配置信息,同时我们的微服务还可以定时向nacos配置中心发请求拉取(pull)更新的配置信息)
  • 微服务应用中客户端如何感知配置中心数据变化?(1.4.x版本的nacos客户端会基于长轮询机制从nacos获取配置信息,所谓的长轮询就是没有配置更新时,会在nacos服务端的队列进行等待.)
  • 服务启动后没有从配置中心获取我们的配置数据是什么原因?(依赖,配置文件名字bootstrap.yml,配置中心的dataId名字是否正确,分组是否正确,配置的名字是否正确,缩进关系是否正确,假如是动态发布,类上是否有@RefreshScope注解)
  • 你项目中使用的日志规范是什么?(SLF4J)
  • 你了解项目中的日志级别吗?(debug,info,error,…,可以基于日志级别控制日志的输出)

Nacos配置管理模型

概述 Nacos 配置管理模型由三部分构成
在这里插入图片描述
其中:

  • Namespace:命名空间,对不同的环境进行隔离,比如隔离开发环境和生产环境
  • Group:分组,将若干个服务或者若干个配置集归为一组
  • Service/DataId:某一个服务或配置集,一般对应一个配置文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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配置中心中获取配置信息,并应用到相应的微服务中。这样,不同的微服务就可以共享配置中心中的配置文件,实现了配置的统一管理和读取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值