谷粒商城学习笔记-23-分布式组件-SpringCloud Alibaba-Nacos配置中心-简单示例

之前已经学习了使用Nacos作为注册中心,这一节学习Nacos另外一个核心功能:配置中心

一,Nacos配置中心简介

Nacos是一个易于使用的平台,用于动态服务发现和配置管理。作为配置中心,Nacos提供了以下核心功能和优势:

  1. 动态配置管理:Nacos允许用户在不重启服务的情况下动态地修改和推送配置信息,实现配置的实时更新。

  2. 配置集中存储:Nacos提供了一个中心化的配置存储,使得配置信息易于管理和维护,避免了配置分散在不同环境和系统中的问题。

  3. 配置版本控制:Nacos支持配置的版本控制,可以追踪配置的变更历史,方便进行回滚操作。

  4. 配置共享:Nacos允许跨服务共享配置,提高配置的复用性,减少冗余。

  5. 配置隔离:通过命名空间(Namespace)的概念,Nacos支持不同环境(如开发、测试、生产)的配置隔离,确保环境间的配置不会相互干扰。

  6. 配置监听和推送:Nacos提供了配置监听功能,当配置发生变化时,可以主动推送更新到客户端,实现配置的热更新。

  7. 安全性:Nacos支持配置的访问控制和权限管理,确保只有授权用户才能访问或修改配置。

  8. 多环境支持:Nacos支持多种部署环境,可以满足不同规模和需求的配置管理。

  9. 与Spring Cloud集成:Nacos与Spring Cloud紧密集成,提供了spring-cloud-starter-alibaba-nacos-config等组件,简化了在Spring Cloud应用中使用Nacos配置中心的过程。

  10. 易用性:Nacos提供了友好的用户界面,使得配置的查看、修改和管理变得直观简单。

Nacos作为配置中心,适用于微服务架构、云原生应用以及需要动态配置管理的分布式系统。通过集中管理配置,Nacos帮助企业提高了配置管理的效率和安全性,同时也简化了开发和运维的工作。

二,Nacos配置中心的使用说明

使用说明在官方文档上有详细记录,点击查看文档https://nacos.io/zh-cn/docs/v2/ecology/use-nacos-with-spring-cloud.html

1,声明对配置中心的Maven依赖

要使用配置中心首先要添加依赖。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

在谷粒商城这个项目中,因为所有服务都要使用Nacos配置中心,所以在common模块添加这个依赖

2,在 bootstrap.properties 中配置 Nacos server 的地址和应用名

在工程或者模块的resource目录下,bootstrap.properties问中声明Nacos服务器的地址和服务名称。

spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=gulimall-coupon

3,在Nacos配置列表界面创建配置文件

在这里插入图片描述

点击创建配置后,会有如下页面。

在这里插入图片描述

  • ① Data ID相当于文件名,要包含服务名,比如gulimall-coupon.properties
  • ② 配置文件类型,支持多种,对于微服务来讲,一般是yaml或者properties
  • ③ 黑色框内是要填充的配置信息

Nacos Spring Cloud 中,Data Id 的完整格式如下:

${prefix}-${spring.profiles.active}.${file-extension}
  • prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix来配置。
  • spring.profiles.active 即为当前环境对应的 profile,详情可以参考 Spring Boot文档。 注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml 类型。

三,测试

1,把配置信息放在工程里

我们先把信息放在工程的配置文件中,在coupon模块的配置文件application.properties中配置如下信息:

coupon.user.name=lcy
coupon.age=22

在这里插入图片描述

2,编写测试代码

在Controller中增加一个方法,使用配置文件中的配置信息。

	@Value("${coupon.user.name}")
    private String userName;
    @Value("${coupon.user.age}")
    private String userAge;

    @RequestMapping("test")
    public R test(){
        return R.ok().put("name", userName).put("age", userAge);
    }

注意上述代码,我们是通过注解@Value将配置文件中的配置注入到类变量中,然后在方法中引用。

3,测试

启动服务后,在浏览器中输入以下地址。

http://localhost:7000/coupon/coupon/test

输出如下,说明已经读取了配置文件中的信息。
在这里插入图片描述

4,把配置信息配置到配置中心

以优惠券服务为例进行配置。
在这里插入图片描述

点击配置文件列表右侧编辑按钮,进入编辑界面。

在这里插入图片描述

注意,为了弄清楚配置中心配置文件和本地配置文件的区别和联系,我们没有删除上一步本地的配置。

目前仅在配置中心配置了一项配置,这项配置在本地配置中也有,但值不一样,本地配置是coupon.user.name=lcy,配置中心是coupon.user.name=lcy2

重启服务后刷新浏览器,结果如下。

在这里插入图片描述
显然,name的值取自配置中心,而不是本地配置文件,说明配置中心的值会覆盖本地配置文件的值

错误记录

谷粒商城配置中心错误记录

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 23:44:04       49 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 23:44:04       53 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 23:44:04       42 阅读
  4. Python语言-面向对象

    2024-07-11 23:44:04       53 阅读

热门阅读

  1. Vue3 + Vite项目使用SVG图片

    2024-07-11 23:44:04       14 阅读
  2. 代码随想录-DAY⑤-哈希表——leetcode 242 | 349 | 202

    2024-07-11 23:44:04       19 阅读
  3. Python爬虫-requests模块

    2024-07-11 23:44:04       21 阅读
  4. AIGC各个应用场景下的模型选择

    2024-07-11 23:44:04       19 阅读
  5. 在Linux中使用Typora将Markdown文档导出为docx格式

    2024-07-11 23:44:04       16 阅读
  6. 编程语言与数据结构的关系:深度解析与探索

    2024-07-11 23:44:04       18 阅读
  7. 华为OD机考题(HJ108 求最小公倍数)

    2024-07-11 23:44:04       14 阅读
  8. 探究kubernetes 探针参数periodSeconds和timeoutSeconds

    2024-07-11 23:44:04       21 阅读
  9. 《大语言模型》赵鑫

    2024-07-11 23:44:04       17 阅读
  10. C++ 例外处理 try throw catch

    2024-07-11 23:44:04       20 阅读