SpringCloud+Nacos实现服务配置中心(Hoxton版本)

悬铃木pp 2021-04-08 10:49:51
SpringCloud 服务 Nacos 实现 springcloud+nacos


关于 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也相应的进行热更新。

版权声明
本文为[悬铃木pp]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/ying-z/p/14630831.html

  1. SCIP: constructing data abstraction -- Explanation of queue and tree in data structure
  2. Spring cloud + Nacos to implement service registry (Hoxton version)
  3. Installation and upgrade of rabbitmq server
  4. Lei Jun: Xiaomi's spring conference has been largely streamlined, which will take at least four hours. Some products will be directly released on Weibo
  5. IntelliJ IDEA 2021最新激活码(亲测有效,可激活至 2089 年)
  6. java版本spring cloud+spring boot+mybatis 分布式商城 微服务商城 多租户商城 电子商务 直播带货商城 社交电商
  7. win10安装Redis5.0
  8. (十五)springboot电子商务商城之SpringCloud-使用Eureka集群搭建实现高可用服务注册中心
  9. (十四)springboot电子商务商城之SpringCloud-Eureka自我保护模式和InstanceID的配置
  10. 花生壳内网穿透(Linux版)
  11. Docker部署elasticsearch(单机)
  12. (十三)springboot电子商务商城之SpringCloud-使用Eureka集群搭建实现高可用服务注册中心
  13. (十二)springboot电子商务商城之Eureka注册中心开启密码认证
  14. 七、Spring Boot 集成 Thymeleaf 模板引擎
  15. mysql 命令行秒复制数据库
  16. Windows安装Mysql(msi 图形安装)
  17. The latest activation code of IntelliJ idea 2021
  18. Java应用全链路启动速度提升至15s,阿里云SAE能力再升级
  19. Linux基础命令
  20. Who moved your red envelope? Risk control report of 2021 spring festival activities
  21. Java version spring cloud + spring boot + mybatis distributed mall micro Service Mall multi tenant mall e-commerce live delivery mall social E-commerce
  22. Java 任意音频转MP3
  23. Docker 的 DNS
  24. Docker-搭建日志监控系统
  25. ssm+mysql+maven+shiro进销存系统wms
  26. Installing redis5.0 on win10
  27. (15) Springcloud of springboot E-commerce mall - using Eureka cluster to build and implement high availability service registry
  28. (14) Springcloud Eureka self protection mode and instanceid configuration of springboot E-commerce mall
  29. Peanut shell intranet penetration (Linux version)
  30. Deploying elastic search with docker (stand alone)
  31. (13) Springcloud of springboot E-commerce mall - using Eureka cluster to build and implement high availability service registry
  32. (12) Eureka registry of springboot E-commerce mall opens password authentication
  33. 爱上 Java 的10 大理由!
  34. 7、 Spring boot integrates thymeleaf template engine
  35. 【DB宝41】监控利器PMM的使用--监控MySQL、PG、MongoDB、ProxySQL等
  36. 【DB宝42】MySQL高可用架构MHA+ProxySQL实现读写分离和负载均衡
  37. MySQL command line second replication database
  38. Windows installation of MySQL (MSI graphic installation)
  39. The full link startup speed of Java applications has been increased to 15s, and the SAE capability of alicloud has been upgraded again
  40. Java 学生成绩管理系统课程设计,附源码!
  41. Linux basic command
  42. Java arbitrary audio to MP3
  43. DNS of docker
  44. Docker - build log monitoring system
  45. SSM + MySQL + Maven + Shiro WMS
  46. Top 10 reasons to fall in love with java!
  47. 一本关于HTTP的恋爱日记
  48. 【RocketMQ源码分析】深入消息存储(3)
  49. SpringCloud+Nacos实现服务配置中心(Hoxton版本)
  50. SCIP:构造数据抽象--数据结构中队列与树的解释
  51. SCIP:构造过程抽象--面向对象的解释
  52. 使用 docker 进行 ElasticSearch + Kibana 集群搭建
  53. Spring IOC 特性有哪些,不会读不懂源码!
  54. [DB Bao 41] use of PMM -- monitoring mysql, PG, mongodb, proxysql, etc
  55. Spring Cloud 升级之路 - 2020.0.x - 3. Undertow 的 accesslog 配置
  56. [DB Bao 42] MySQL high availability architecture MHA + proxysql realizes read-write separation and load balancing
  57. [DataGuard] recovery of physical DG in case of losing archive files in main database (7)
  58. MyBatis(3)Map和模糊查询拓展
  59. 【TTS】AIX-&gt;Linux--基于RMAN(真实环境)
  60. 【TTS】传输表空间AIX-&gt;linux基于rman