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

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

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

  • 单体架构:简单粗暴,适合试水。
  • 前后端分离:解放生产力,技术栈自由。
  • 集群:用"人海战术"扛压力。
  • 分布式:拆解复杂度,分工协作。
  • 微服务:精细化分工,系统像细胞一样可自愈、可进化。
相关推荐
2301_803554521 小时前
从单机到集群,再到分布式,再到微服务
分布式·微服务·架构
二进制小甜豆1 小时前
Spring MVC
java·后端·spring·mvc
重生之我要当java大帝2 小时前
谷粒商城-分布式微服务项目-高级篇[三]
分布式·微服务·架构
申城异乡人3 小时前
聊聊@Autowired注解的Field injection is not recommended提示问题
java·spring
xujinwei_gingko4 小时前
微服务-Sentinel
微服务·sentinel
fanly114 小时前
凯亚物联网如何搭建信令服务
微服务·surging microservice
MyikJ14 小时前
Java求职面试:从Spring到微服务的技术挑战
java·数据库·spring boot·spring cloud·微服务·orm·面试技巧
MyikJ14 小时前
Java 面试实录:从Spring到微服务的技术探讨
java·spring boot·微服务·kafka·spring security·grafana·prometheus
星之尘102115 小时前
“粽”览全局:分布式系统架构与实践深度解析(端午特别版)
分布式·spring cloud·微服务·系统架构·kubernetes·serverless·可用性测试
椰椰椰耶18 小时前
[网页五子棋][匹配模块]处理开始匹配/停止匹配请求(匹配算法,匹配器的实现)
java·python·websocket·spring·java-ee