• [Alibaba微服务技术入门]_服务配置中心入门_第5讲


    什么是服务配置中心

    Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置

    Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容

    服务配置中心官方文档介绍:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

     

    服务配置中心可以解决的哪些问题

    1、配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散在各个微服务中,不好统一配置和管理

    2、配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动维护,这比较困难

    3、配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一个正在运行的项目来说是非常不友好的

     

    Nacos Config 入门

    使用nacos作为配置中心,就是将nacos当做一个服务端,将各个微服务看成是客户端,我们将各个微服务的配置文件统一存放在nacos上,然后各个微服务从nacos上拉取对应的配置即可

    第1步:创建 4-nacos-config7001 子工程

    第2步:加入依赖 spring-cloud-starter-alibaba-nacos-config

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

    第3步:添加nacos config的配置

    注意:我们需要新建一个bootstrap.yml作为配置文件,不能使用原来的application.yml作为配置文件。官方要求,必须使用 bootstrap.yml(或bootstrap.properties) 配置文件来配置 Nacos Server 地址

    配置文件优先级:bootstrap.properties > bootstrap.yml > application.properties > application.yml

    server:
      port: 7001
    spring:
      application:
        name: nacos-config-client
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
          config:
            file-extension: yaml
            server-addr: localhost:8848
      profiles:
        active: dev
    # 配置中心文件格式 ${spring.application.name}-{spring.profile.active}.{file-extension}

    注意:配置中心文件格式一定要按照 ${spring.application.name}-{spring.profile.active}.{file-extension} 进行命名

    第4步:在nacos后台配置列表中添加配置信息

    在新建配置过程中,要注意下面的细节:

    • Data ID 不能随便写,对应 ${spring.application.name}
    • 配置文件格式要注意,目前 nacos-server-1.4.1 支持的配置文件有:TEXT / JSON / XML / YAML / HTML / Properties
    • 配置文件的内容,一定要和所选的内容一致。比如:选择 yaml 格式文件,则文件内容就必须满足 yaml 格式要求

     

     第5步:创建 NacosConfigController,通过接口请求测试是否能够读取到配置中心的 nacos-config-client-dev.yaml 文件中的内容

    package com.liuyangjava.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class NacosConfigController {
    
        @Value("${config.info}")
        private String configInfo;
    
        @GetMapping("/nacos/config")
        public String getInfo() {
            return configInfo;
        }
    
    }

     第6步:配置动态刷新

    我们实现了配置的远程存放,但是此时如果修改了配置,我们的程序是无法读取到的,因此,我们需要开启配置的动态刷新功能。只需要在对应接口上添加此注解 @RefreshScope 就可以

    package com.liuyangjava.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    @RefreshScope  // 支持nacos动态刷新
    public class NacosConfigController {
    
        // 省略不写...
    
    }
  • 相关阅读:
    洛谷 P1474 货币系统 Money Systems 题解
    洛谷 P5146 最大差值 题解
    洛谷 P1880 [NOI1995]石子合并 题解
    洛谷 P1063 能量项链 题解
    洛谷 P3385 【模板】负环 题解
    洛谷 P1522 牛的旅行 Cow Tours 题解
    洛谷 P2212 [USACO14MAR]浇地Watering the Fields 题解
    浅谈 C 语言中模块化设计的范式
    内联函数(Inline Functions)
    C++中全局变量的声明和定义
  • 原文地址:https://www.cnblogs.com/liuyangjava/p/15421123.html
Copyright © 2020-2023  润新知