您的位置:首页 > 编程语言 > Java开发

Spring Cloud Alibaba从入门到放弃-Nacos构建配置中心

2019-08-07 15:28 901 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/honger_hua/article/details/98750434

 

                                         Nacos构建配置中心

我们已经学会了,如何利用Nacos实现服务的注册与发现。同时,也介绍了在Spring Cloud中,我们可以使用的几种不同编码风格的服务消费方式。接下来,我们再来学习一下Nacos的另外一个重要能力:配置管理。

简介

Nacos除了实现了服务的注册发现之外,还将配置中心功能整合在了一起。通过Nacos的配置管理功能,我们可以将整个架构体系内的所有配置都集中在Nacos中存储。这样做的好处,在以往的教程中介绍Spring Cloud Config时也有提到,主要有以下几点:

  • 分离的多环境配置,可以更灵活的管理权限,安全性更高
  • 应用程序的打包更为纯粹,以实现一次打包,多处运行的特点

Nacos的配置管理模型与淘宝开源的配置中心Diamond类似,基础层面都通过

DataId
Group
来定位配置内容,除此之外还增加了很多其他的管理功能。

快速入门

下面我们通过一个简单的例子来介绍如何在Nacos中创建配置内容以及如何在Spring Cloud应用中加载Nacos的配置信息。

我们以前面的服务提供工程nacos-provider作为基础集成nacos配置。

创建配置

第一步:进入Nacos的控制页面,在配置列表功能页面中,点击右上角的“+”按钮,进入“新建配置”页面,如下图填写内容:

其中:

  • Data ID
    :填入
    alibaba-nacos-config-client.properties
  • Group
    :不修改,使用默认值
    DEFAULT_GROUP
  • 配置格式
    :选择
    Properties
  • 配置内容
    :应用要加载的配置内容,这里仅作为示例,做简单配置,比如:
    age=10

第二步:编辑

pom.xml
,加入配置必要的依赖配置:

 

[code]​
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

​

 第三步:改造应用主类,并实现一个HTTP接口:

[code]package com.lyh.nacosprovider;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@EnableDiscoveryClient
@SpringBootApplication
@RefreshScope
@RestController
public class NacosProviderApplication {

public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}

@Value("${age}")
private String age;

@GetMapping("/hello")
public String hello(@RequestParam String name) {
return "hello " + name;
}

@GetMapping("/age")
public String age() {
return "hello I am"+age+"years old";
}

}

内容非常简单,

@SpringBootApplication
定义是个Spring Boot应用;还定义了一个Controller,其中通过
@Value
注解,注入了key为
age
的配置(默认为空字符串),这个配置会通过
/test
接口返回,后续我们会通过这个接口来验证Nacos中配置的加载。另外,这里还有一个比较重要的注解
@RefreshScope
,主要用来让这个类下的配置内容支持动态刷新,也就是当我们的应用启动之后,修改了Nacos中的配置内容之后,这里也会马上生效。

第四步:创建配置文件

bootstrap.properties
,并配置服务名称和Nacos地址

[code]spring.application.name=nacos-provider
server.port=8001
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.register-enabled=true
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.enabled=true

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.file-extension=properties

注意:这里必须使用

bootstrap.properties
。同时,
spring.application.name
值必须与上一阶段Nacos中创建的配置Data Id匹配(除了.properties或者.yaml后缀)。

第五步:启动上面创建的应用。

在启动的时候,我们可以看到类似上面的日志信息,这里会输出应用程序要从Nacos中获取配置的dataId和group。如果在启动之后,发现配置信息没有获取到的时候,可以先从这里着手,看看配置加载的目标是否正确。

第六步:验证配置获取和验证动态刷新

用curl或者postman等工具,访问接口: 

localhost:8001/age
,一切正常的话,将返回Nacos中配置的
nacos-provider
。然后,再通过Nacos页面,修改这个内容,点击发布之后,再访问接口,可以看到返回结果变了。

同时,在应用的客户端,我们还能看到如下日志:

[code]--- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener       : Refresh keys changed: [didispace.title]

在Nacos中修改了Key,在用到这个配置的应用中,也自动刷新了这个配置信息。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐