【SpringCloud】认识微服务

1. 认识微服务

学习 Spring Cloud 前,先理清这条技术链:
单体架构 → 分布式 → 微服务

就像搭积木,从一块实心木块到分拆重组,每一步都是为了解决更高阶的问题。

1.2. 单体架构

场景还原:

许多同学刚学后端时,会把前端代码(HTML/CSS/JS)直接塞进 Spring Boot 项目的 resources/static 目录。一旦修改前端样式,就得重新打包整个项目,连带着后端代码一起发布。这种「前后端代码同吃同住」的模式,就是典型的单体架构

特点与痛点:

  • 代码臃肿:前后端、业务模块全挤在一个工程里,像一团纠缠的毛线。
  • 牵一发动全身:改个按钮颜色?抱歉,得重启整个服务。
  • 技术栈锁死:想给前端换 Vue3?得先拆了这栋"老房子"。

1.2 前后端分离架构

为了让网站更美观,你学了 Vue,把前端代码独立出来:

  1. Vue 项目通过 npm run build 生成静态文件,丢给 Nginx 托管。
  2. 后端 Spring Boot 专注提供 API,Nginx 反向代理将前端请求转发到后端。
  3. 前后端通过 API 通信,代码、部署完全独立。

此时架构特点:

  • 解耦:前端改版无需惊动后端,后端升级不影响页面展示。
  • 技术自由:前端用 React,后端换 Go?随意搭配!
  • 独立迭代:双线开发,效率翻倍。

1.3 分布式

阶段一:集群

问题: 用户量暴增,单台服务器撑不住了。
解法: 用 Nginx 搭个负载均衡,背后挂两台服务器,像双胞胎一样干完全相同的活

  • 优点:请求"雨露均沾",性能翻倍,一台挂了另一台顶上。
  • 本质集群是"人海战术",靠数量堆出高可用。

阶段二:分布式

新痛点: 订单模块改个逻辑,用户模块也得跟着重新发布?
解法: 让服务器分头行动

  • 服务器 A 专管用户服务,服务器 B 专注订单处理。
  • 模块间通过 API 或消息队列协作,独立部署、互不影响

分布式核心思想:

  • 拆分:按业务能力切分系统(如用户、订单、支付)。
  • 协作:像奥运会接力赛,各模块传递"业务接力棒"。

集群+分布式统称为分布式。

1.4 微服务

类比: 走进一家高端餐厅:

  • 迎宾 只负责微笑问候,领位 带你入座,侍酒师 专注倒水,厨师只管炒菜。
  • 每个人技能专精,共同完成一餐体验。

技术定义:

  • 微服务 = 分布式架构 + 能力原子化
  • 每个服务足够微小 (单一职责),独立自治 (自有数据库、技术栈),轻量通信(HTTP/RPC)。

与分布式的区别:

维度 分布式 微服务
目标 分散压力,提升性能 分散能力,提升系统灵活性
拆分粒度 按机器或模块切分 按业务能力原子化拆分
技术约束 允许模块间强耦合 强调彻底解耦和独立演进
  • 微服务一定是分布式架构,但分布式未必是微服务(可能只是模块分散)。
  • 微服务是分布式的"高阶形态",像乐高积木------每个零件微小、标准、可自由拼装。

1.4 总的来说

单体架构 → 前后端分离 → 集群 → 分布式 → 微服务

每一步都在解决上一步的痛点:

  • 单体架构:简单粗暴,适合试水。
  • 前后端分离:解放生产力,技术栈自由。
  • 集群:用"人海战术"扛压力。
  • 分布式:拆解复杂度,分工协作。
  • 微服务:精细化分工,系统像细胞一样可自愈、可进化。
相关推荐
.生产的驴15 分钟前
SpringBoot 大文件分片上传 文件切片、断点续传与性能优化 切片技术与优化方案 文件高效上传
java·服务器·spring boot·后端·spring·spring cloud·状态模式
练习时长一年13 小时前
Spring配置类的演化
java·spring boot·spring
喜欢流萤吖~13 小时前
服务间的依赖管理:微服务的协作之道
java·微服务
invicinble13 小时前
Spring如何把bean注册到容器里
java·后端·spring
恼书:-(空寄14 小时前
静态代理与动态代理,Spring AOP底层精髓全解析
spring·动态代理·静态代理
希望永不加班14 小时前
SpringBoot 敏感数据脱敏(序列化层)
java·spring boot·后端·spring
希望永不加班14 小时前
SpringBoot 数据库索引优化:慢查询分析
java·数据库·spring boot·后端·spring
我登哥MVP17 小时前
【SpringMVC笔记】 - 11 - SpringMVC 执行流程
java·spring boot·笔记·spring·tomcat·intellij-idea
LSL666_18 小时前
微服务架构
微服务·云原生·架构
威迪斯特18 小时前
GoFr框架:加速微服务开发的Go语言利器
开发语言·后端·微服务·架构·golang·命令行框架·gofr框架