四、Spring Cloud Alibaba-Nacos-分布式配置中心

一、概述

        在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。
        动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。使用Nacos分布式配置中心可以对项目使用到的配置文件做统一管理,并且支持不同环境动态切换,动态刷新,界面操作管理。

二、使用步骤

  1. 添加依赖;
  2. 在Nacos-UI界面发布配置;
  3. 修改项目内部配置文件,用于读取第二步发布的配置。

三、案例演示

        本文案例代码是基于上一篇文章《三、Spring Cloud Alibab-Feign-服务调用》进行增加的。
        在上述文章的服务消费者(nacos-consumer)模块中,配置信息都是写在application.yml配置文件中,一旦需要修改就得关闭服务,修改之后重新启动才会生效。此案例中将配置发布到Nacos上,并实现动态刷新配置效果。

3.1、Maven依赖(POM)

        在服务消费者(nacos-consumer)模块中添加Nacos-Config依赖:


<dependency>
	<groupId>org.springframework.cloudgroupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
dependency>

3.2、使用Nacos UI发布配置

        通过浏览器访问Nacos Server:http://192.168.145.129:8848/nacos;点击配置列表即可新增并发布配置。四、Spring Cloud Alibaba-Nacos-分布式配置中心_第1张图片        将工程application.yml配置文件中的配置信息复制到配置内容中,去除注释。
四、Spring Cloud Alibaba-Nacos-分布式配置中心_第2张图片        注:Data ID 的默认扩展名为 .properties ,希望使用 YAML 配置,此处必须指明是 .yaml,也不是.yml

server:
  port: 8071

spring:
  application:
    name: service-consumer
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.145.129:8848

feign:
  hystrix:
    enabled: true

3.3、修改项目内部配置(bootstrap.properties)

        删除工程原有的application.yml配置文件,并新建一个名为bootstrap.properties的配置文件,并在此文件中配置加载Nacos Config发布的配置信息:

# 读取Nacos Config中配置名
spring.application.name=service-consumer-config
# Nacos Config服务地址
spring.cloud.nacos.config.server-addr=192.168.145.129:8848
# 配置后缀,与配置名结合即为Data ID
spring.cloud.nacos.config.file-extension=yaml

        Spring Boot项目配置文件优先加载顺序:
        bootstrap.properties > bootstrap.yml > application.properties > application.yml

3.4、前端控制器(Controller)

        为测试能获取到Nacos Config上发布的配置信息,并且支持动态刷新效果,新建一个前端控制器打印服务端口:
        在前端控制器加上@RefreshScope注解, 打开动态刷新功能;使用@Value注解注入配置数据。

package com.zhoumo.nacos.consumer.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RefreshScope
@RestController
@RequestMapping("/consumer")
public class NacosConfigController {

    @Value("${server.port}")
    private String port;

    @RequestMapping("/config")
    public String ConfigTest(){
        return "This service port is: " + port;
    }

}

3.5、启动项目验证是否获取配置

四、Spring Cloud Alibaba-Nacos-分布式配置中心_第3张图片

3.6、修改配置验证是否动态刷新

        1、进入Nacos UI界面,选择并编辑配置;
四、Spring Cloud Alibaba-Nacos-分布式配置中心_第4张图片
        2、修改服务端口号,并选择发布;
四、Spring Cloud Alibaba-Nacos-分布式配置中心_第5张图片        3、查看工程控制台日志,可看到端口已动态刷新;
四、Spring Cloud Alibaba-Nacos-分布式配置中心_第6张图片
        4、浏览器访问前端控制器,再次验证是否成功刷新。
在这里插入图片描述注:服务端口没变,获取端口配置变了。证明通过Nacos Config修改配置数据并不需要重启服务,而是通过动态刷新获得。

提示: 你可以使用 spring.cloud.nacos.config.refresh.enabled=false 来关闭动态刷新

四、总结

        本文介绍了Nacos分布式配置中心的含义以及作用,并通过详细案例讲解了在Spring Cloud项目中如何使用Nacos-分布式配置中心;如何通过Nacos Config实现配置数据信息动态刷新等功能。


你可能感兴趣的:(#,Spring,Cloud,Alibaba学习笔记)