[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 {

    // 省略不写...

}
原文地址:https://www.cnblogs.com/liuyangjava/p/15421123.html