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

Spring Cloud 详解与搭建全攻略

目录

一、概念详解

1.1 引入

1.1.1 单体架构

1)特点

2)技术栈

3)优缺点

4)适用场景

1.1.2 分布式架构

1)特点

2)技术栈

3)优缺点

4)适用场景

1.2.3 微服务架构

1)特点

2)核心原则

3)优缺点

4)适用场景

1.2.4 三个架构的演进与关联

两个易混淆的点

1.2 微服务的核心组成

二、拆分策略

2.1 核心逻辑

2.2 常见方法

三、搭建一个SpringCloud

3.1 新建一个maven项目

3.2 删除无用目录

3.3 添加版本控制

3.4 创建微服务子模块

3.4.1 创建cloud-gateway

3.4.2 在pom.xml文件中添加模块说明

3.4.3 修改子模块cloud-gateway的pom.xml文件

3.4.4 按照上面的步骤创建下面的子模块

3.5 搭建nacos的环境

3.5.1 解压缩nacos

3.5.2 打开conf目录下的application.properties

3.5.3 启动nacos

3.5.4 进入到nacos的web端

3.5.5 新建命名空间

3.5.6 搭建配置中心配置文件

3.6 配置网关微服务

3.6.1 导入依赖

3.6.2 重命名配置文件

3.6.3 配置网关路由

3.6.4 配置其他服务子模块

1)cloud-order

①在pom.xml文件加上依赖:

②加入nacos的配置(该改名改名)

③创建基础包结构(我们来写个测试实战一下)

④编写一个很简单的测试类

⑤搭建基本的环境变量

⑥启动cloud-gateway和cloud-order子项目进行测试

2)其他模块进行同样搭建服务


一、概念详解

Spring Cloud 是用于 将单体应用拆分为分布式微服务架构的框架集合。它提供了一系列工具和组件,帮助开发者构建、部署和管理分布式系统中的各个服务。

1.1 引入

🔍在了解SpringCloud概念之前,首先要先明确 单体框架,分布式框架
单体架构、分布式架构、微服务架构是软件架构的不同演进阶段,而 Spring Cloud 是实现微服务架构的主流技术栈。

1.1.1 单体架构

1)特点
  • 将业务所有功能集中在一个项目中开发。
  • 各模块直接访问同一数据库。
2)技术栈
  • Web 框架:Spring MVC、Struts。
  • 数据库:MySQL、Oracle。
  • 部署:Tomcat、Jetty。
3)优缺点
  • 优点:开发简单、部署方便、调试容易。
  • 缺点:代码扩展性差、维护困难--牵一发而动全身。
4)适用场景
小型应用或初期快速迭代的项目。

1.1.2 分布式架构

1)特点
  • 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,即一个服务。
  • 服务间通过 RPC、REST 等协议通信。
  • 数据库可能分片或复制。
2)技术栈
  • 通信:Dubbo、gRPC、HTTP。
  • 服务发现:ZooKeeper、Consul。
  • 负载均衡:Nginx、LVS。
3)优缺点
  • 优点:可扩展性强、容错性高、资源利用率优化。
  • 缺点:复杂度高(网络延迟、分布式事务)、运维成本高。
4)适用场景
大型应用、高并发系统(如电商、社交平台)。

1.2.3 微服务架构

微服务:
微服务架构:
1)特点
  • 单一职责服务:每个服务专注于特定业务能力(如用户服务、订单服务),避免重复业务开发。
  • 自治性:独立开发、部署、扩展,技术栈可异构。
  • 轻量级通信:优先使用 RESTful API 或消息队列。
  • 隔离性极强,不会再出现一方出错全台崩坏的场景。
2)核心原则
  • 按领域驱动设计(DDD)划分服务边界。
  • 避免共享数据库,通过事件驱动或 API 同步数据。
3)优缺点
  • 优点:高内聚低耦合、快速迭代、故障隔离。
  • 缺点:服务间调用复杂、分布式系统问题(如服务雪崩)。
4)适用场景
需快速迭代、技术异构、团队规模大的项目。

1.2.4 三个架构的演进与关联

💡

  1. 单体架构 → 分布式架构:为解决单体扩展性问题,将应用拆分到多个服务器。
  2. 分布式架构 → 微服务架构:进一步强调服务自治性和业务边界,避免过度拆分。
  3. Spring Cloud 加速微服务落地:提供开箱即用的组件,降低分布式系统开发门槛。
维度
微服务架构(Microservices)
分布式架构(Distributed System)
Spring Cloud
本质
一种
架构风格
一种
系统形态
一套
技术工具箱
(框架/生态)
关注点
如何把单体拆成独立的小服务
如何让多台机器协同完成一件事
http://www.xdnf.cn/news/16506.html

相关文章:

  • MySQL的底层原理--InnoDB数据页结构
  • Java实现大根堆与小根堆详解
  • 53. 最大子数组和
  • 在 Windows 系统中实现 WinToGo 的 VHDX 文件切换使用的常见方法
  • 9.3 快速傅里叶变换
  • Cortex-M内核SysTick定时器介绍
  • [2025CVPR-图象合成、生成方向]ODA-GAN:由弱监督学习辅助的正交解耦比对GAN 虚拟免疫组织化学染色
  • 【Keepalived】高可用集群
  • 香港本地和国际金融科技应用
  • Javaweb————HTTP的九种请求方法介绍
  • RoPE:相对位置编码的旋转革命——原理、演进与大模型应用全景
  • 【micro:bit】从入门到放弃(六):示例蜂鸣器音乐、摇色子、光照强度、串口调试、麦克风
  • mac版SVN客户端
  • “Datawhale AI夏令营”「结构化数据的用户意图理解和知识问答挑战赛」1
  • 最优估计准则与方法(5)加权最小二乘估计(WLS)_学习笔记
  • 【图像分割】记录1:unet, yolov8_seg
  • 基于springboot的在线数码商城/在线电子产品商品销售系统的设计与实现
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘ipython’问题
  • 【iOS】网易云仿写
  • 【守护】同为科技SPD:AP-20D/4P产品解析
  • 【leetGPU】1. Vector Addition
  • 其他世界的自来水
  • 统计与大数据分析与数学金融课程解析
  • ThreadLocal--ThreadLocal介绍
  • 技术 — 资本双螺旋:AI 时代的投资浪潮与技术突破
  • vulhub-earth靶机攻略
  • Mixture-of-Recursions: 混合递归模型,通过学习动态递归深度,以实现对自适应Token级计算的有效适配
  • 什么是缓存雪崩?缓存击穿?缓存穿透?分别如何解决?什么是缓存预热?
  • QT中启用VIM后粘贴复制快捷键失效
  • SQL Developer Data Modeler:一款免费跨平台的数据库建模工具