欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > 微服务学习-Nacos 作为配置中心动态管理

微服务学习-Nacos 作为配置中心动态管理

2025/2/24 20:04:11 来源:https://blog.csdn.net/qq_29768197/article/details/145237202  浏览:    关键词:微服务学习-Nacos 作为配置中心动态管理

Nacos 作为配置中心使用

1. 作用

配置中心就是一种统一管理应用配置的基础服务组件。

2. 微服务为什么需要配置中心

在微服务架构中,当系统从一个单体应用,被拆分成分布式系统上一个个服务节点后,配置文件也必须跟着迁移(分割),这样配置就很分散,不仅如此,分散中还包含着冗余。

配置中心就是一种统一管理各种应用配置的基础服务组件。配置中心的出现,可以解决这些问题,使得配置信息集中管理,易于维护,并且可以动态更新配置,使得分布式系统更加稳定可靠。

一个微服务一个 application.yml,如果 100 个微服务就会有 100 个 application.yml,如果注册中心地址发生了变化,想象一下怎么改配置。

配置中心使得配置信息集中管理,易于维护,并且可以动态更新配置。

3. Nacos 作为配置中心怎么用

官方参考文档:快速开始-阿里云Spring Cloud Alibaba官网

3.1. Nacos 配置中心配置方法的变化

在 SpringBoot2.4 这个大版本中一项非常重要的改动:出于对云原生多配置文件的支持,默认关闭了对 bootstrap.yml 的使用。

解决方案:

方案一:重新启用 bootstrap.yml(不推荐)

方案二:使用 spring.config.import(官方推荐)

spring:config:import:- optional:nacos:${spring.application.name}.yml- optional:nacos:db-common.yml    #公共配置

spring.config.import: - optional:nacos:icoolkj-mall-order.yml:这一行是 Spring Boot 2.4.0 及以上版本引入的配置文件导入机制。optional:nacos:icoolkj-mall-order.yml 表示从 Nacos 配置中心导入名为 icoolkj-mall-order.yml 的配置文件,其中 optional 关键字意味着如果该配置文件在 Nacos 中不存在,那么 Spring Boot 将不会抛出异常,而是继续执行后续的初始化流程。

3.2. 订单服务整合 Nacos 配置中心

目标:把微服务中公共的配置抽取出来统一管理配置,例如订单服务的注册中心配置和数据库公共配置可以抽取出来。

3.2.1. 在 Nacos 控制台创建 dataId(对应 spring.config.import 指定的配置文件名称)

抽取 application.yml 中配置信息,配置到 Nacos 指定的 dataId 文件中

公共配置:nacos-discovery.yml db-myslq-common.yml

spring:cloud:nacos:discovery:server-addr: icoolkj-mall-nacos-server:8848
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: icoolDP1988mybatis:configuration:map-underscore-to-camel-case: true#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

订单服务自己的配置 icoolkj-mall-order.yml

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mall-order?useSSL=false&characterEncoding=utf8cloud:loadbalancer:nacos:enabled: true

同时订单服务的 application.yml 对应配置

server:port: 8082spring:application:name: icoolkj-mall-ordercloud:nacos:config:server-addr: icoolkj-mall-nacos-server:8848file-extension: yml   # 指定配置文件扩展名为ymlconfig:import:- optional:nacos:${spring.application.name}.yml- optional:nacos:db-mysql-common.yml # mysql数据库公共配置- nacos:nacos-discovery.yml#logging:
#  level:
#    com.alibaba.cloud.nacos: debug
3.2.2. 引入依赖

订单服务的 pom.xml 引入 nacos-config 依赖

<!-- nacos-config 配置中心依赖 -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

4. 重启订单服务,测试

4.1.1. 可以在订单服务的 application.yml 中增加 nacos 日志打印配置,便于查看从配置文件拉取配置情况
logging:level:com.alibaba.cloud.nacos: debug
4.1.2. Nacos 控制台查看订单服务是否启动成功,并注册到 Nacos 注册中心

如果没有拉取到数据库配置是会报错的。

4.1.3. 查看下单是否成功扣减库存

5. 其他服务整合 Nacos 配置中心

同订单服务整合 Nacos 配置中心步骤相同,将商品、库存、账户服务整合 Nacos 配置中心。

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mall-account?useSSL=false&characterEncoding=utf8
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mall-inventory?useSSL=false&characterEncoding=utf8
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/mall-product?useSSL=false&characterEncoding=utf8

6. 小结

通过 Nacos 配置中心,可以实现微服务配置的统一管理。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词