SA实战 ·《SpringCloud Alibaba实战》第22章-服务配置:项目整合Nacos配置中心

简介: SA实战 ·《SpringCloud Alibaba实战》第22章-服务配置:项目整合Nacos配置中心


一不小心《SpringCloud Alibaba实战》专栏都更新到第22章了,再不上车就跟不上了,小伙伴们快跟上啊!

注意:本项目完整源码加入 「冰河技术」 知识星球即可获取,文末有入场方式。

前文回顾

在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。


基于阿里开源的Sentinel实现了服务的限流与容错,并详细介绍了Sentinel的核心技术与配置规则。简单介绍了服务网关,并对SpringCloud Gateway的核心架构进行了简要说明,也在项目中整合了SpringCloud Gateway网关实现了通过网关访问后端微服务.

同时,也基于SpringCloud Gateway整合Sentinel实现了网关的限流功能,详细介绍了SpringCloud Gateway网关的核心技术。在链路追踪章节,我们开始简单介绍了分布式链路追踪技术与解决方案,随后在项目中整合Sleuth实现了链路追踪,并使用Sleuth整合ZipKin实现了分布式链路追踪的可视化 。

在消息服务章节,我们介绍了MQ的使用场景,引入MQ后的注意事项以及MQ的选型对比,在项目中整合了RocketMQ,并给大家介绍了RocketMQ的核心技术。

在服务配置章节,我们首先介绍了服务配置与Nacos作为配置中心的相关概念。接下来,我们就正式在项目中整合Nacos配置中心。

本章总览

图片.pngimage.gif


「注意:本章中在测试每个案例时,都需要启动Nacos,Sentinel,ZipKin和RocketMQ。另外,本章对应的Nacos配置(冰河亲测的Nacos配置)放在了项目源码的doc/nacos/config/chapter22目录下,小伙伴们将Nacos的配置直接导入到Nacos的配置列表中,也可以按照文章自己手动实现。本项目完整源码加入 冰河技术 知识星球即可获取,文末有入场方式。」

环境准备

分别在用户微服务shop-user,商品微服务shop-product,订单微服务shop-order和网关服务shop-gateway中的pom.xml文件中添加如下依赖。

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


服务整合Nacos配置中心

这里,我们将用户微服务,商品微服务,订单微服务和网关服务的配置信息都放在Nacos中。

「注意:将微服务的配置放在Nacos中时,就暂时不用微服务中的application.yml配置文件了,而是在项目中新建一个bootstrap.yml文件。因为配置文件的优先级从高到低依次为:bootstrap.properties -> bootstrap.yml -> application.properties -> application.yml。」

用户微服务整合配置中心

(1)在用户微服务shop-user的resources目录下新建bootstrap.yml文件,文件内容如下所示。

spring:
  application:
    name: server-user
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        group: user_group
  profiles:
    active: dev

(2)启动Nacos,在浏览器中输入http://localhost:8848/nacos并登录Nacos,选择Nacos菜单中的配置管理-配置列表,如下所示。

图片.pngimage.gif

(3)点击配置列表界面中的 「+」 ,如下所示。

图片.pngimage.gif

点开后的界面如下所示。

图片.pngimage.gif

其中各个配置项的含义如下所示。

  • Data ID就是配置集ID,通常情况下就是某个配置文件的ID,这个ID的命名遵循一定的规则,如下所示。
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

这里,对应到用户微服务的Data ID就是:server-user-dev.yaml。所以,对于用户微服务来说,我们在Data ID中输入server-user-dev.yaml。

  • Group:配置分组,配置分组要与spring.cloud.nacos.config.group对应,用户微服务的配置分组就是user_group。
  • 描述:对当前配置的简单描述。例如,用户微服务的开发环境配置。
  • 配置格式:表示配置内容所使用的文件格式,这里我们选择YAML格式。
  • 配置内容:配置文件的内容,这里我们直接将application.yml文件的内容复制进去即可。

配置好之后的内容如下所示。

图片.png

配置好之后点击页面的发布按钮,如下所示。

图片.png

发布成功后会跳转到配置管理-配置列表界面,如下所示。

图片.png

(4)注释掉用户微服务shop-user的resources目录下的application.yml文件中的内容(重要,不要忘记)

至此,就完成了修改用户微服务的配置操作。

商品微服务整合配置中心

修改商品微服务的配置过程与修改用户微服务的配置过程类似,只是部分配置项不同。

(1)在商品微服务shop-product的resources目录下新建bootstrap.yml文件,内容如下所示。

spring:
  application:
    name: server-product
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        group: product_group
  profiles:
    active: dev

(2)在Nacos中的配置信息如下所示。

图片.png

(3)注释掉商品微服务shop-product的resources目录下的application.yml文件中的内容(重要,不要忘记)

订单微服务整合配置中心

修改订单微服务的配置过程与修改用户微服务的配置过程类似,只是部分配置项不同。

(1)在订单微服务shop-order的resources目录下新建bootstrap.yml文件,内容如下所示。

spring:
  application:
    name: server-order
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        group: order_group
  profiles:
    active: dev

(2)在Nacos中的配置信息如下所示。

图片.png

(3)注释掉订单微服务shop-order的resources目录下的application.yml文件中的内容(重要,不要忘记)

网关服务整合配置中心

修改网关服务的配置过程与修改用户微服务的配置过程类似,只是部分配置项不同。

(1)在网关服务shop-gateway的resources目录下新建bootstrap.yml文件,内容如下所示。

spring:
  application:
    name: server-gateway
  main:
    allow-bean-definition-overriding: true
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        group: gateway_group
  profiles:
    active: dev

(2)在Nacos中的配置信息如下所示。

图片.png

(3)注释掉网关服务shop-gateway的resources目录下的application.yml文件中的内容(重要,不要忘记)

查看Nacos中的配置

将用户微服务、商品微服务、订单微服务、网关服务的配置添加到Nacos中后,Nacos中的配置管理-配置列表如下所示。

图片.png

整合Nacos配置中心测试

(1)分别启动Nacos、Sentinel、ZipKin、RocketMQ的NameServer和Broker。

(2)分别启动用户微服务、商品微服务、订单微服务和网关服务,如果启动成功,基本就说明项目整合Nacos配置中心成功。

(3)启动四个服务后,在浏览器中输入localhost:10001/server-order/order/submit_order?userId=1001&productId=1001&count=1,如下所示。

图片.png

查看各个微服务中也会打印出相关的日志,如下所示。

  • 用户微服务会打印出如下信息
获取到的用户信息为:{"address":"北京","id":1001,"password":"c26be8aaf53b15054896983b43eb6a65","phone":"13212345678","username":"binghe"}
用户微服务收到了订单信息:{"address":"北京","id":15235872727371776,"phone":"13212345678","totalPrice":2399.00,"userId":1001,"username":"binghe"}
  • 商品微服务会打印出如下信息
获取到的商品信息为:{"id":1001,"proName":"华为","proPrice":2399.00,"proStock":9999}
更新商品库存传递的参数为: 商品id:1001, 购买数量:1
  • 订单微服务会打印出如下信息
提交订单时传递的参数:{"count":1,"empty":false,"productId":1001,"userId":1001}
库存扣减成功
  • 网关服务会打印出如下信息
执行前置过滤器逻辑
执行后置过滤器逻辑
访问接口主机: localhost
访问接口端口: 10001
访问接口URL: /server-order/order/submit_order
访问接口URL参数: userId=1001&productId=1001&count=1
访问接口时长: 1260ms

说明我们的项目中成功整合了Nacos的配置中心。

「好了,今天我们就到儿吧,限于篇幅,文中并未给出完整的案例源代码,想要完整源代码的小伙伴可加入【冰河技术】知识星球获取源码。也可以加我微信:hacker_binghe,一起交流技术。」

「另外,一不小心就写了22章了,小伙伴们你们再不上车就真的跟不上了!!!」

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
存储 JavaScript 开发工具
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
本次的.HarmonyOS Next ,ArkTS语言,HarmonyOS的元服务和DevEco Studio 开发工具,为开发者提供了构建现代化、轻量化、高性能应用的便捷方式。这些技术和工具将帮助开发者更好地适应未来的智能设备和服务提供方式。
基于HarmonyOS 5.0(NEXT)与SpringCloud架构的跨平台应用开发与服务集成研究【实战】
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
669 2
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
876 3
|
数据管理 Nacos 开发者
"Nacos架构深度解析:一篇文章带你掌握业务层四大核心功能,服务注册、配置管理、元数据与健康检查一网打尽!"
【10月更文挑战第23天】Nacos 是一个用于服务注册发现和配置管理的平台,支持动态服务发现、配置管理、元数据管理和健康检查。其业务层包括服务注册与发现、配置管理、元数据管理和健康检查四大核心功能。通过示例代码展示了如何在业务层中使用Nacos,帮助开发者构建高可用、动态扩展的微服务生态系统。
594 0
|
SQL 关系型数据库 数据库连接
"Nacos 2.1.0版本数据库配置写入难题破解攻略:一步步教你排查连接、权限和配置问题,重启服务轻松解决!"
【10月更文挑战第23天】在使用Nacos 2.1.0版本时,可能会遇到无法将配置信息写入数据库的问题。本文将引导你逐步解决这一问题,包括检查数据库连接、用户权限、Nacos配置文件,并提供示例代码和详细步骤。通过这些方法,你可以有效解决配置写入失败的问题。
1079 0
|
Kubernetes Nacos 微服务
【技术难题破解】Nacos v2.2.3 + K8s 微服务注册:强制删除 Pod 却不消失?!7步排查法+实战代码,手把手教你解决Nacos Pod僵死问题,让服务瞬间满血复活!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但有时会遇到“v2.2.3 k8s 微服务注册nacos强制删除 pod不消失”的问题。本文介绍此现象及其解决方法,帮助开发者确保服务稳定运行。首先需检查Pod状态与事件、配置文件及Nacos配置,确认无误后可调整Pod生命周期管理,并检查Kubernetes版本兼容性。若问题持续,考虑使用Finalizers、审查Nacos日志或借助Kubernetes诊断工具。必要时,可尝试手动强制删除Pod。通过系统排查,通常能有效解决此问题。
762 0
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
845 0
|
Java Nacos 开发工具
【Nacos】心跳断了怎么办?!8步排查法+实战代码,手把手教你解决Nacos客户端不发送心跳检测问题,让服务瞬间恢复活力!
【8月更文挑战第15天】Nacos是一款广受好评的微服务注册与配置中心。然而,“客户端不发送心跳检测”的问题时有发生,可能导致服务实例被视为离线。本文介绍如何排查此类问题:确认Nacos服务器地址配置正确;检查网络连通性;查看客户端日志;确保Nacos SDK版本兼容;调整心跳检测策略;验证服务实例注册状态;必要时重启应用;检查影响行为的环境变量。通过这些步骤,通常可定位并解决问题,保障服务稳定运行。
1270 0
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
3430 13
Spring Cloud Alibaba:一站式微服务解决方案

热门文章

最新文章