四、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依赖:

<!-- Nacos-Config Start -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- Nacos-Config Start -->

3.2、使用Nacos UI发布配置

        通过浏览器访问Nacos Server:http://192.168.145.129:8848/nacos;点击配置列表即可新增并发布配置。在这里插入图片描述        将工程application.yml配置文件中的配置信息复制到配置内容中,去除注释。
在这里插入图片描述        注: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、启动项目验证是否获取配置

在这里插入图片描述

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

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

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

四、总结

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值