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

SpringCloud Alibaba场景实践(Nacos篇)

一、基于SpringCloud Alibaba的微服务电商解决方案

1.1、什么是SpringCloud Alibaba?

一系列框架的有序的集合

1.2、电商项目的三高

高并发、高新能、高可用

1.3、SpringCloud Alibaba电商微服务 架构

image.png

AKF扩展拆分

image.png

y轴


image.png

x轴


image.png

z轴


image.png

1.4 微服务工程搭建

image.png

搭建结构

版本选择


版本匹配

1.5 Nacos极简入门

1.5.1 介绍

帮助我们发现、配置、管理微服务(alibaba实现的服务注册中心)

  • 服务发现和健康检测
  • 动态配置服务
  • 动态DNS服务
  • 服务及其元数据管理
    【https://nacos.io/zh-cn/docs/what-is-nacos.html#:~:text=%E5%BC%80%E5%8F%91%E5%9B%A2%E9%98%9F-,%E4%BB%80%E4%B9%88%E6%98%AF%20Nacos,-%E6%A6%82%E8%A7%88】
1.5.2 使用场景
老项目使用

最新用法
1.5.3 使用

下载地址:https://github.com/alibaba/nacos/releases
启动:
访问:

1.5.4 Nacos与项目整合

启动类上加@EnableDiscoveryClient服务发现注解,在RestTemplate上加@LoadBalanced注解,实现动态路由功能,最后在yml文件中配置nacos地址
pom.xml

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
String productName = restTemplate.getForObject("http://product-server/product/createProduct/" + productId, String.class);

二、Nacos Config配置中心

2.1 常见的配置中心

  • Appllo
  • Disconf
  • SpringCloud Config
  • Nacos

2.2 为什么使用配置中心

  • 配置文件分散在各个项目里,不方便维护
  • 配置内容安全与权限
  • 更新配置后,项目需要重启

2.3 配置中心得作用

系统配置的集中管理(编辑、存储、分发)、动态更新配置不重启、回滚配置(变更管理、历史版本管理、变更审计)等所有与配置相关的活动

2.4 不同环境的配置与使用

        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
spring:application:name: configcentercloud:nacos:config:server-addr: ***********:8848file-extension: yamlprofiles:active: dev
server:port: 7000

配置中心地址:http://47.93.249.168:8848/nacos

nacos配置中心

配置中心详细配置

@RestController
@RefreshScope  //动态刷新nacos配置
@RequestMapping("/config")
public class ConfigController {@Value("${testStr}")private String testStr;@Value("${testCommon}")private String testCommon;@GetMapping("/test")public String hello() {return testStr + "," +"testCommon";}
}
思考:在nacos中配置了四个文件,configcenter-test.yaml,configcenter-dev.yaml,configcenter-prod.yaml,configcenter.yaml
如果同一个配置在四个文件中都存在且值不同,最终项目读取的是那个?

最后会读取configcenter.yaml

结论:如果配置了spring.profile.active则优先获取configcenter-${spring.profile.active}.yaml中的值
总结:
  • 在bootstrap.yaml文件中如果配置了spring.profile.active,在nacos多个配置中,不重合的值都会读取,重合的以active为主。没配置就以configcenter.yaml为主
  • nacos中Data ID(configcenter-dev)的取值要与bootstrap.yaml中 spring.application.name(configcenter)和spring.profiles.active(dev)的值一致

2.5 不同微服务的配置和使用

1、shard-configs
spring:application:name: configcentercloud:nacos:config:server-addr: **********:8848file-extension: yamlshared-configs[0]:dataId: mq.yaml          # 对应的nacos的Data Idrefresh: true               # 是否刷新shared-configs[1]:dataId: redis.yamlrefresh: true
/*** 不同微服务的nacos配置*/@Value("${redisStr}")private String redisStr;@Value("${mqStr}")private String mqStr;@Value("${test}")private String test;@GetMapping("/test")public String hello() {return testStr + "," +testCommon;}@GetMapping("/test2")public String hello2() {return redisStr +","+ mqStr;}@GetMapping("/test3")public String hello3() {return test;}
nacos配置中心
思考:如果shard-configs的文件存在相同的配置,最终会以哪个配置文件中的值为主

会以后配置的配置文件中的值为主

2、extension-configs

extension-configs读取顺序和shard-config配置和读取顺序一样,后配置的为主

spring:application:name: configcentercloud:nacos:config:server-addr: **********:8848file-extension: yamlextension-configs[0]:dataId: redis.yaml          # 对应的nacos的Data Idrefresh: true               # 是否刷新extension-configs[1]:dataId: mq.yamlrefresh: true

总结

当shared-configs和extension-configs存在相同的配置,则以extension-config中的配置为主

三、Nacos Config动态刷新机制

3.1 原理:

image.png
最后编辑于:2025-06-05 21:07:25


喜欢的朋友记得点赞、收藏、关注哦!!!

http://www.xdnf.cn/news/14545.html

相关文章:

  • WSL2 中安装 cuDNN​​ 的完整指南
  • Arduino入门教程:5、按键输入
  • 贝塞尔曲线的切矢量
  • 分割数据集 - 足球运动员分割数据集下载
  • 关于 使用 GPT 自动生成反调试代码详解
  • 手机SIM卡通话中随时插入录音语音片段(Windows方案)
  • NLP语言发展路径分享
  • Good Start/Smilo and Minecraft
  • 大数据集群架构hadoop集群、Hbase集群、zookeeper、kafka、spark、flink、doris、dataease(四)
  • Oracle 逻辑结构与性能优化(上)
  • Softhub软件下载站实战开发(三):平台管理模块实战
  • 第9章:Neo4j集群与高可用性
  • SpringBoot学习day3-SpringBoot注解开发(新闻项目后段基础)
  • Java中的CAS与ABA
  • Leetcode 刷题记录 14 —— 回溯
  • 什么是装饰器?
  • UE5错误 Linux离线状态下错误 circular dependency detected;includes/requires
  • chapter06-针对分类的微调
  • 实战指南:部署MinerU多模态文档解析API与Dify深度集成(实现解析PDF/JPG/PNG)
  • 【RAG文档解析】深度剖析 PDF 解析的痛点与方案
  • springboot集成dubbo
  • LangChain调用本地modelscope下载的Deepseek大模型
  • Python打卡第54天
  • 13分钟讲解主流Linux发行版
  • origin绘制双Y轴柱状图、双Y轴柱状点线图和双Y轴点线图
  • Node.js验证码:从生成到验证的趣味之旅
  • 条件收敛的级数中项必须趋于 0,正负项抵消,但趋于 0 的速度不需要“足够快”
  • 【学习笔记】深入理解Java虚拟机学习笔记——第9章 类加载及执行子系统的案例与实战
  • 深度学习进化史:从神经元的诞生到万亿参数的觉醒
  • 掌握这些 Python 函数,让你的代码更简洁优雅