【SpringCloud】认识微服务

发布于:2025-03-24 ⋅ 阅读:(24) ⋅ 点赞:(0)

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 总的来说

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

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

  • 单体架构:简单粗暴,适合试水。
  • 前后端分离:解放生产力,技术栈自由。
  • 集群:用“人海战术”扛压力。
  • 分布式:拆解复杂度,分工协作。
  • 微服务:精细化分工,系统像细胞一样可自愈、可进化。

网站公告

今日签到

点亮在社区的每一天
去签到