vlambda博客
学习文章列表

快速入门 Nacos 作为配置中心操作


1.前言

一般项目配置都是在配置文件中进行设置,这种方式一般会有2种弊端:
  1. 多个环境配置修改比较繁琐。
  2. 敏感配置直接暴露在配置文件中不安全。
通过一个单独配置中心可以完美解决上述2个问题,配置统一在配置中心进行配置,一旦修改配置无需重新启动项目,也正是由于配置都在配置中心,项目中并没有任何配置信息,相对于之前直接写在配置文件中安全许多。
目前比较成熟的配置中心有:SpringCloud Config、Apollo、Nacos。本文主要介绍通过 Nacos 作为配置中心的操作。通过本文你将了解如下内容:
  • 在本地环境搭建单机版 Nacos 配置服务端
  • 通过Alibaba Initializr 生成 SpringBoot 配置项目客户端
  • 以及搭建过程中需要注意的事项

2.本地环境版本说明

阅读本文需要你熟悉 SpringBoot 项目的基本使用即可,还有一点需要注意的是在操作过程中尽量和我本地环境一致,因为环境不一致可能会带来一些问题。我本地环境如下:
  1. SpringBoot Version: 2.1.2.RELEASE
  2. Apache Maven Version:3.6.0
  3. JDK Version:1.8.0_144
  4. SpringCloud Alibaba Version: 2.1.2.RELEASE
  5. Nacos-Client:1.1.4
  6. IDEA:Intellij idea

3.搭建 Nacos服务端

3.1.根据官方文档进行安装

第一步:访问 https://nacos.io/zh-cn/index.html 官网,然后点击手册查看具体文档内容。

快速入门 Nacos 作为配置中心操作

第二步:在左边导航栏处选择快速开始-Nacos 查看安装Nacos 服务端操作方式。

快速入门 Nacos 作为配置中心操作

官方文档给出详细操作方式,具体跟着文档介绍安装即可。

3.2.针对不懂 Git同学简单方式

如果你看了官方文档还是一头雾水的话,那就跟着下面的介绍来操作。
第一步:访问 Nacos GitHub 仓库地址:https://github.com/alibaba/nacos/ ,点击如下图所示  releases 处。
快速入门 Nacos 作为配置中心操作
 第二步:选择目前官方推荐的 1.1.4版本,点击如下图所示的zip 包进行下载。
快速入门 Nacos 作为配置中心操作

目前稳定版本是官方推荐的 1.1.4版本,个人也比较强烈建议选择这个版本。

第三步:下载好后解压压缩包并进入 nacos/bin 目录,然后通过命令窗口执行官方介绍的启动命令。

Linux/Unix/Mac 启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:

bash startup.sh -m standalone

Windows 启动命令:

cmd startup.cmd

或者双击startup.cmd运行文件。

快速入门 Nacos 作为配置中心操作 第四步:访问 http://localhost:8848/nacos 通过用户名:nacos、密码:nacos 进行登录。  快速入门 Nacos 作为配置中心操作  快速入门 Nacos 作为配置中心操作
到这里Nacos 配置中心服务端搭建完毕!

4.搭建 Nacos配置客户端

4.1.通过 AlibabaInitializr生成客户端代码

第一步:访问 start.aliyun.com选择客户端项目的构建方式、开发语言、SpringBoot 版本等基础信息、Nacos Configuration 和 Spring Web 组件依赖。

快速入门 Nacos 作为配置中心操作

快速入门 Nacos 作为配置中心操作

快速入门 Nacos 作为配置中心操作

第二步:点击生成下载客户端代码压缩包。

快速入门 Nacos 作为配置中心操作

第三步:将压缩包解压导入IDEA 中。并修改如下配置项目。
  1. 注释掉 spring.cloud.nacos.config.contextPath=/nacos
  2. 添加 spring.cloud.nacos.config.namespace= 命名空间ID
  3. 将 application.properties 改为 bootstrap.properties
  4. 添加 nacos-client 1.1.4版本依赖具体代码如下:
 
   
   
 
  1. <dependency>

  2. <groupId>com.alibaba.nacos</groupId>

  3. <artifactId>nacos-client</artifactId>

  4. <version>1.1.4</version>

  5. </dependency>

也可不添加自定义命名空间配置,通过public 命令空间进行操作。

4.2.服务端添加配置项

在添加配置之前先介绍一下 Nacos 配置操作中常用的概念:
  • Data Id:具体配置项的集合,可以理解为原先没有使用配置中心的配置文件。
  • Group:可以用于不同环境配置区分。创建开发环境分组和测试环境分组来区分开发环境和测试环境的配置。也可以用于将大的配置项拆分为多个小的配置。
  • 命名空间:可以用于区分不同环境的配置也可以区分具体的项目。
关于Group和命名空间使用方式可以根据你具体业务进行灵活使用。
接下来开始在配置服务端添加配置:
第一步:创建命名空间用于对应客户端Demo项目。

快速入门 Nacos 作为配置中心操作

快速入门 Nacos 作为配置中心操作

第二步:在命名空间下添加配置。

快速入门 Nacos 作为配置中心操作

点击加号添加配置集。

快速入门 Nacos 作为配置中心操作

  • Data ID:应用名称.properties
  • Group:使用默认项即可
  • 配置格式:选择Properties ,官方提供的示例使用的是 application.properties 方式进行配置,你也可以选择yml 方式
  • 配置内容:user.name=zhuoqianmingyue
SpringBoot 的应用名称 (即 spring.application.name=应用名称)和 Data ID 中的 .properties 前缀必须相同。即:Data ID为 demo.properties 那么spring.application.name= demo。

快速入门 Nacos 作为配置中心操作

添加完成后点击发布然后点击确定则添加完成。
快速入门 Nacos 作为配置中心操作 第三步:在SpringBoot 客户端项目中配置命名空间ID。
命名空间ID 可以在 命名空间列表处和配置列表中进行查看。具体如下所示:

快速入门 Nacos 作为配置中心操作

快速入门 Nacos 作为配置中心操作

复制命名空间ID 添加SpringBoot 项目中  bootstrap.properties 配置文件中的  spring.cloud.nacos.config.namespace 配置项中。

bootstrap.properties 具体配置内容如下:
 
   
   
 
  1. #################################### common config : ####################################

  2. spring.application.name=demo

  3. # 应用服务web访问端口

  4. server.port=8080

  5. # ActuatorWeb访问端口

  6. management.server.port=8081

  7. management.endpoints.jmx.exposure.include=*

  8. management.endpoints.web.exposure.include=*

  9. management.endpoint.health.show-details=always


  10. # spring cloud access&secret config

  11. spring.cloud.alicloud.access-key=****

  12. spring.cloud.alicloud.secret-key=****



  13. #################################### nacosconfig config : ####################################

  14. # 微服务引擎控制台: https://mse.console.aliyun.com

  15. # Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html


  16. # nacos认证信息

  17. spring.cloud.nacos.config.username=nacos

  18. spring.cloud.nacos.config.password=nacos

  19. #spring.cloud.nacos.config.contextPath=/nacos

  20. spring.cloud.nacos.config.namespace=命名空间ID


  21. # ----------配置中心,如果无需使用配置中心,可以删除此部分配置----------

  22. spring.cloud.nacos.config.server-addr= localhost:8848

到这里Demo 项目配置操作介绍完毕!接下来就开始进行测试是否可以从配置中心获取Demo项目的配置。

5.测试

Alibaba Initializr 生成SpringBoot 客户端提供的测试Controller 具体代码如下:
 
   
   
 
  1. @RestController

  2. @RefreshScope

  3. public class SampleController {


  4. @Value("${user.name}")

  5. String userName;


  6. @Value("${user.age:25}")

  7. int age;


  8. @RequestMapping("/user")

  9. public String simple() {

  10. return "Hello Nacos Config!" + "Hello " + userName + " " + age + "!";

  11. }

  12. }

通过访问 http://localhost:8080/user 进行测试。如下图所示表示获取配置成功!

快速入门 Nacos 作为配置中心操作

将user.name 配置修改成 zhuoqianmingyue1 会看到日志信息如下:
 
   
   
 
  1. 2020-05-01 22:15:51.693 INFO 34551 --- [9c-fe7ca50889a9] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [user.name]

  2. 2020-05-01 22:15:51.694 INFO 34551 --- [9c-fe7ca50889a9] c.a.nacos.client.config.impl.CacheData : [fixed-localhost_8848-1fa607c3-f205-46b8-979c-fe7ca50889a9] [notify-ok] dataId=demo.properties, group=DEFAULT_GROUP, md5=8f0b201d16b8e298e023a7440a676991, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@141367de

  3. 2020-05-01 22:15:51.694 INFO 34551 --- [9c-fe7ca50889a9] c.a.nacos.client.config.impl.CacheData : [fixed-localhost_8848-1fa607c3-f205-46b8-979c-fe7ca50889a9] [notify-listener] time cost=503ms in ClientWorker, dataId=demo.properties, group=DEFAULT_GROUP, md5=8f0b201d16b8e298e023a7440a676991, listener=com.alibaba.cloud.nacos.refresh.NacosContextRefresher$1@141367de

在不重启项目的情况下再次访问获取到了最新修改的配置信息。

6.小结

Nacos 在文档方面还是不错的,从搭建服务端到客户端通过官方仓库和 Alibaba Initializr 可以快速上手。
在这里在强调一下在搭建过程中一定要将 application.properties 配置文件修改为 bootstrap.properties 否则启动项目后并不会报错,但是配置中心配置并不会生效。
如果你想配置多个环境配置,可以通过创建例如:demo-dev.properties 和 demo-test.properties 区分开发环境和测试环境配置,然后通过在 bootstrap.properties 中通过 spring.profiles.active=test 方式来指定你要使用环境配置。
【END】
关注下方二维码,订阅更多精彩内容