当前位置: 首页 > article >正文

微服务学习-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.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: icoolDP1988

mybatis:
  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=utf8
  cloud:
    loadbalancer:
      nacos:
        enabled: true

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

server:
  port: 8082

spring:
  application:
    name: icoolkj-mall-order
  cloud:
    nacos:
      config:
        server-addr: icoolkj-mall-nacos-server:8848
        file-extension: yml   # 指定配置文件扩展名为yml

  config:
    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 配置中心,可以实现微服务配置的统一管理。


http://www.kler.cn/a/512328.html

相关文章:

  • 路由器旁挂三层网络实现SDWAN互联(爱快SD-WAN)
  • 2024 年度学习总结
  • Mac 上如何安装Mysql? 如何配置 Mysql?以及如何开启并使用MySQL
  • 4.JoranConfigurator解析logbak.xml
  • Vue3 nginx 打包后遇到的问题
  • 什么宠物最好养?
  • AI绘画入门:探索数字艺术新世界(1/10)
  • 2025年01月19日Github流行趋势
  • nuxt3项目打包部署到服务器后配置端口号和开启https
  • Hive SQL 解决数据倾斜
  • 指针之旅:从基础到进阶的全面讲解
  • 新手上路:Anaconda虚拟环境创建和配置以使用PyTorch和DGL
  • Vmware无法打开虚拟机(网络资料)
  • Xcode :给模拟器 创建桌面 快捷方式
  • 使用Java爬虫获取微店商品详情实践指南
  • SparkSQL数据源与数据存储
  • kafka学习笔记4-TLS加密 —— 筑梦之路
  • 探秘 Linux 进程状态:解锁系统运行的密码
  • 算法6(力扣148)-排序链表
  • lvm快照备份
  • 【优选算法】----移动零
  • Grafana 统一可视化了,告警如何统一?
  • 【银河麒麟高级服务器操作系统】业务访问慢网卡丢包现象分析及处理过程
  • Python----Python高级(文件操作open,os模块对于文件操作)
  • LLM大语言模型的分类
  • 通信协议—WebSocket