关于 Nacos Spring Cloud 的详细文档请参看:Nacos Config和Nacos Discovery。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更。

通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

前提条件
首先下载安装一个nacos server,然后启动nacos server。下载和安装流程查看https://www.cnblogs.com/ying-z/p/14630738.html
 
新建配置
可以通过两种方式新建配置。
方式一:访问Nacos Server页面手动创建。
首先登录Nacos Server,地址一般为 http://127.0.0.1:8848/nacos/index.html。
然后进入配置列表,点击新增配置按钮,进入新增配置页面。

注意:

这里我创建Data Id为nacos-config.properties的配置文件,其中Group为默认的DEFAULT_GROUP,配置文件的格式也相应的选择Properties,配置内容中添加配置nacos.config=hello_nacos,如图所示。

方式二:通过调用Nacos Open API向Nacos Server发布配置:dataId为nacos-config.properties,内容为nacos.config=hello_nacos

curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos-config.properties&group=DEFAULT_GROUP&content=nacos.config=hello_nacos"

创建服务应用

(1)使用SpringBoot,创建一个名为nacos-config的子工程。

(2)pom.xml文件添加如下依赖。

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencyManagement>
<dependencies>
<!-- 声明Spring cloud的版本为Hoxton.SR3-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 声明Spring cloud alibaba版本为2.1.0.RELEASE -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 声明nacos-discovery依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 声明nacos-config依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>

备注:如果不需要注册该服务,也可以去掉nacos-discovery依赖。

注意:版本2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。

更多版本对应关系参考:版本说明 Wiki

(3)修改application.properties添加相关配置

server.port=9002
spring.application.name=nacos-config
spring.application.cloud.nacos.discovery.server-addr=127.0.0.1:8848

(4)创建配置文件,文件名为bootstrap.properties。并在bootstrap.properties中配置Nacos server的地址和应用名。

注意:文件名是bootstrap.xxx,而不是application或者其他。因为Nacos同Spring Cloud Config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。SpringBoot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application。

这里的配置文件类型可以根据个人习惯选择,我这里用的时properties类型,配置内容如下:

#服务名称
spring.application.name=nacos-config
#指定注册中心的地址。如果你不需要注册该服务,也可以去掉该项,并删除discovery依赖。
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#指定配置中心的地址。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
#指定配置中心中配置文件的格式。
#spring.cloud.nacos.config.file-extension=properties

之所以需要配置spring.application.name,是因为它是构成Nacos配置管理dataId字段的一部分。

在Nacos-Server配置管理,其中Data ID它的定义规则是: 
${prefix}-${spring.profile.active}.${file-extension}

prefix:默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.prefix来配置。

spring.profile.active:即为当前环境对应的profile,详情可以参考 Spring Boot文档。可以通过配置项spring.profile.active来配置。当spring.profile.active为空时,对应的连接符 - 也将不存在,dataId的拼接格式变成 ${prefix}.${file-extension}。

file-exetension:为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension来配置。目前只支持properties和yaml类型。

(5)创建对外接口ConfigController,从nacos中读取配置。

@RefreshScope
@RestController
public class ConfigController {
@Value("${nacos.config}")
private String configValue; @RequestMapping("/config/get")
public String get() {
return configValue;
}
}

@RefreshScope:Spring Cloud的原生注解,可以使当前类下的配置支持动态更新。

@Value:通过@Value注解,去读取key为nacos.config的配置的值,并通过/config/get接口返回。

到此代码部分的工作已经完成。

启动服务进行测试

(1)保证Nacos-Server已经启动。

(2)检查Nacos-Server中配置列表中是否已经添加相应的配置文件。

(3)启动nacos-config项目。

(4)启动成功后在Nacos控制台中可以看到我们注册的服务。

(5)此时调用接口进行测试http://127.0.0.1:9002/config/get,可以看到返回结果。

此时说明已经成功读取到配置。

(6)下面我将Nacos-Server上的配置修改为hello_lars,看看能否动态更新。修改Nacos-Server上的配置后,刷新http://127.0.0.1:9002/config/get页面,结果更新为新的配置了。

可以看到我通过Nacos-server的控制台进行配置的修改,客户端服务nacos-config也相应的进行热更新。

SpringCloud+Nacos实现服务配置中心(Hoxton版本)的更多相关文章

  1. Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)

    文章目录 摘要 Nacos简介 使用Nacos作为注册中心 安装并运行Nacos 创建应用注册到Nacos 负载均衡功能 使用Nacos作为配置中心 创建nacos-config-client模块 在 ...

  2. Spring Cloud Alibaba系列(二)nacos作为服务配置中心

    Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持.使用 Spring Cloud Alibaba Nacos Config,您可 ...

  3. Nacos笔记01——使用Nacos作为SpringCloud项目的服务注册中心

    前言 刚学SpringCloud时使用eureka作为服务注册中心,随着网飞公司eureka2.x不再更新,以及最近在公司实习接触到的SpringCloud项目是使用Nacos来做服务注册中心的,所以 ...

  4. 【微服务】之三:从零开始,轻松搞定SpringCloud微服务-配置中心

    在整个微服务体系中,除了注册中心具有非常重要的意义之外,还有一个注册中心.注册中心作为管理在整个项目群的配置文件及动态参数的重要载体服务.Spring Cloud体系的子项目中,Spring Clou ...

  5. SpringCloud系列之分布式配置中心极速入门与实践

    SpringCloud系列之分布式配置中心极速入门与实践 @ 目录 1.分布式配置中心简介 2.什么是SpringCloud Config? 3.例子实验环境准备 4.Config Server代码实 ...

  6. SpringCloud学习系列之四-----配置中心(Config)使用详解

    前言 本篇主要介绍的是SpringCloud中的分布式配置中心(SpringCloud Config)的相关使用教程. SpringCloud Config Config 介绍 Spring Clou ...

  7. SpringCloud04 服务配置中心、消息总线、远程配置动态刷新

    1 环境说明 JDK:1.8 MAVENT:3.5 SpringBoot:2.0.5.RELEASE SpringCloud:Finchley.SR1 2 创建服务注册中心(Eureka服务端) 说明 ...

  8. 微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    在结合场景谈服务发现和配置中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原生”的 Spring ...

  9. SpringCloud服务配置中心

    SpringCloud Config简介 Spring Cloud Config 是 Spring Cloud 团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持 ...

  10. 使用Alibaba的Nacos做为SpringCloud的注册和配置中心,并结合Sentinel+Nocos动态进行限流熔断

    最近在学习阿里的Nacos组件以及Sentinel组件,折腾出了一个小demo. Git地址:https://github.com/yangzhilong/nacos-client 有兴趣的小伙伴可以 ...

随机推荐

  1. log4j相对路径找不到,处理方法

    http://blog.csdn.net/u012345283/article/details/40821833?utm_source=tuicool&utm_medium=referral

  2. javaScript中利用ActiveXObject来创建FileSystemObject操作文件

    注:如果用javascript读本地文件,遇到安全问题. 需在浏览器中进行设置,如下:     工具—> Internet选项->安全->自定义级别->启用“没有标识为安全的A ...

  3. HDFS的基本shell操作,hadoop fs操作命令

    (1)分布式文件系统 随着数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管 ...

  4. 纯css实现轮播图

    轮播图的实现原理其实是比较简单的 举个例子 <div class="main"> <div class="div-main"></ ...

  5. 关于安全性问题:(XSS,csrf,cors,jsonp,同源策略)

    关于安全性问题:(XSS,csrf,cors,jsonp,同源策略) Ajax 是无需刷新页面就能从服务器获取数据的一种方法.它的核心对象是XHR,同源策略是ajax的一种约束,它为通信设置了相同的协 ...

  6. 从零开始学安全(四十)●上传文件MIME类型绕过漏洞防御

    MIME检测原理 服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的. php示例代码: if($_FILES['userfile']['type' ...

  7. mysql架构解读~mysql的多源复制

    一 场景需求 多源复制版本 5.7,目标主机5.6.21 4个DB机器的某些数据库需要数据汇总进行连表查询 二 进行搭建  1 导出相应的目的库     mysqldump -uuser -ppass ...

  8. 【Spark】SparkStreaming-Checkpoint-容错

    SparkStreaming-Checkpoint-容错 Spark Streaming如何使用checkpoint容错 - CSDN博客 spark/JavaRecoverableNetworkWo ...

  9. 一致性Hash算法原理及C#代码实现

    一.一致性Hash算法原理 基本概念 一致性哈希将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),整个哈希空间环如下: 整个空间按顺 ...

  10. Python数据类型之数字

    数字(数值) 整数 :123 (int型) 浮点数: 0.25(带小数点的数字即为浮点数,Float型) 布尔值:False,True(即0和1,bool型) 复数 (暂无资料,complex型) 整 ...