SpringCloud Alibaba - Nacos 作为配置中心 & 读取Properties配置信息

简介: SpringCloud Alibaba是阿里巴巴致力于对微服务的管理、配置、注册等一整套的解决方案。简介Nacos 提供用于存储配置和其他元数据的 K-V 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。

SpringCloud Alibaba阿里巴巴致力于对微服务管理配置注册等一整套的解决方案。

简介

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

Nacos Config支持多种方式的配置格式,比如:TEXTJSONXMLYAMLHTMLPROPERTIES等。
我们本章先来看下是怎么读取Properties类型的配置。

前提

本地需要安装Nacos Server,具体安装步骤访问Nacos官网文档,Nacos Server 安装

创建项目

使用idea工具创建一个SpringCloud项目。

添加依赖

添加依赖在pom.xml配置文件如下所示:

//...
<properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
        <spring-cloud-alibaba.version>0.2.1.RELEASE</spring-cloud-alibaba.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--alibaba nacos config-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!--SpringCloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--SpringCloud Alibaba-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
//...

bootstrap引导配置

Nacos Config相关的配置必须在bootstrap.yml或者bootstrap.properties文件内添加。
配置内容如下所示:

spring:
  application:
    name: alibaba-nacos-config-client
  # nacos config  
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
  • spring.application.name
    spring-cloud-starter-alibaba-nacos-config依赖默认会使用该值的内容作为DATA-ID来匹配读取Nacos Config,读取规则下面介绍。
  • spring.cloud.nacos.config.server-addr
    配置nacos server的地址信息,nacos server本地安装访问Nacos Server 安装

读取Nacos配置

在启动类内添加读取Nacos Config部分代码,为了跟下一步做铺垫来测试自动更新,我们间隔1秒后再次读取配置内容,编码如下所示:

/**
 * Nacos Config Properties方式
 *
 * @author:恒宇少年 - 于起宇
 * <p>
 * DateTime:2019-03-01 11:20
 * Blog:http://blog.yuqiyu.com
 * WebSite:http://www.jianshu.com/u/092df3f77bca
 * Gitee:https://gitee.com/hengboy
 * GitHub:https://github.com/hengyuboy
 */
@SpringBootApplication
public class SpringCloudAlibabaNacosConfigPropertiesApplication {
    /**
     * logger instance
     */
    static Logger logger = LoggerFactory.getLogger(SpringCloudAlibabaNacosConfigPropertiesApplication.class);

    public static void main(String[] args) throws Exception {
        ConfigurableApplicationContext applicationContext = SpringApplication.run(SpringCloudAlibabaNacosConfigPropertiesApplication.class, args);
        while (true) {
            //当动态配置刷新时,会更新到 Enviroment中,因此这里每隔一秒中从Enviroment中获取配置
            String userName = applicationContext.getEnvironment().getProperty("hengboy.name");
            String userAge = applicationContext.getEnvironment().getProperty("hengboy.age");
            logger.info("配置信息,名称:{},年龄:{}", userName, userAge);
            TimeUnit.SECONDS.sleep(1);
        }
    }
}

测试

接下来我们来测试是否可以从Nacos Config内读取相关的配置信息,我们需要访问Nacos Console控制台来添加配置信息。
访问:Nacos Console,默认用户名/密码为:nacos/nacos

添加 Nacos Config

通过配置列表内添加配置信息,添加时DATA-ID的组成部分为:{spring.application.name}.{file-extension}
file-extension文件后缀名默认为properties,如果需要修改,在bootstrap文件内进行修改配置spring.cloud.nacos.config.file-extension的值。
添加的配置信息如下所示:

DATA ID : alibaba-nacos-config-client.properties
Group : DEFAULT_GROUP
配置内容 : 
hengboy.name=admin-properties
hengboy.age=11

输出 Nacos Config

一切就绪,我们通过Application方式启动项目,查看控制台打印内容如下所示:

Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEFAULT_GROUP'
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='alibaba-nacos-config-client.properties'}]}
配置信息,名称:admin-properties,年龄:11

自动更新配置

在上面的步骤中我们已经可以从Nacos Config内读取到对应的properties配置文件内容信息。
那我们如果通过Nacos Console进行修改了配置内容后,我们的应用程序是不是可以立马获取到修改后的值呢?

我们带着这个疑问,去Nacos Console找到DATA-ID = alibaba-nacos-config-client.properties的配置信息,修改hengboy.age的值为25,重新发布配置信息后查看我们的应用程序的控制台输出内容如下所示:

Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEFAULT_GROUP'
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='alibaba-nacos-config-client.properties'}]}
Refresh keys changed: [hengboy.age]
配置信息,名称:admin-properties,年龄:25

可以看到输出的内容,我们修改完外部的配置信息后,Nacos Client会自动刷新所修改的配置文件内容,始终让配置内容保持与Nacos Config内配置一致。
我们通过Nacos Console修改的当前DATA-ID下的任何参数都会在控制台Refresh keys changed: [xxx,xxx]打印。

总结

本章简单的讲解了SpringCloud Alibaba的配置中心读取配置信息方式以及自动更新配置信息实现,在开头我们说了Nacos Config所支持的配置文件的格式不仅仅是properties这一种,不过这是默认的一种方式,在下一章我们来讲解下YAML方式的配置信息读取。

源码位置

开源信息

  • MicroJob
    micro-job是一款分布式任务调度执行框架,用于集群环境负载均衡条件下的任务分发以及任务消费

任务消费者节点定义任务 & 任务自动上报
任务调度器自动根据负载均衡策略来选择不同的消费者节点进行任务消费


[点击查看MicroJob官方文档](http://job.yuqiyu.com/#/)
相关文章
|
1月前
|
Dubbo 关系型数据库 MySQL
nacos常见问题之命名空间配置数据上线修改如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
92 1
|
1天前
|
Java API Nacos
第十二章 Spring Cloud Alibaba Sentinel
第十二章 Spring Cloud Alibaba Sentinel
10 0
|
2天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
9天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
25 2
|
18天前
|
SpringCloudAlibaba Java Nacos
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
SpringCloud Alibaba微服务 -- Nacos使用以及注册中心和配置中心的应用(保姆级)
|
24天前
|
开发框架 负载均衡 Java
Spring boot与Spring cloud之间的关系
总之,Spring Boot和Spring Cloud之间的关系是一种构建和扩展的关系,Spring Boot提供了基础,而Spring Cloud在此基础上提供了分布式系统和微服务架构所需的扩展和工具。
18 4
Spring boot与Spring cloud之间的关系
|
1月前
|
编解码 Java Nacos
nacos常见问题之密码加密配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
139 0
|
1月前
|
安全 前端开发 Nacos
nacos常见问题之配置注册的白名单如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
94 0
|
1月前
|
网络安全 Nacos 数据安全/隐私保护
nacos常见问题之配置内容不显示也修改不了如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
110 0
|
1月前
|
运维 Java Nacos
nacos常见问题之配置不生效不加载shared-configs 配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
101 0