栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Nacos服务配置中心

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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项目中添加如配置依赖
  
        com.alibaba.cloud
        spring-cloud-starter-alibaba-nacos-config
  

  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:某一个服务或配置集,一般对应一个配置文件
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号