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

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

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

  • 单体架构:简单粗暴,适合试水。
  • 前后端分离:解放生产力,技术栈自由。
  • 集群:用"人海战术"扛压力。
  • 分布式:拆解复杂度,分工协作。
  • 微服务:精细化分工,系统像细胞一样可自愈、可进化。
相关推荐
草履虫建模8 小时前
RuoYi-Cloud 微服务本地部署详细流程实录(IDEA + 本地 Windows 环境)
java·spring boot·spring cloud·微服务·云原生·架构·maven
Code季风10 小时前
深入理解 Redis 分布式锁:如何实现有效的过期时间和自动续期
redis·分布式·微服务
Code季风14 小时前
Redis 缓存:应对缓存雪崩、缓存击穿和缓存穿透
数据库·redis·分布式·后端·缓存·微服务·mybatis
●VON15 小时前
重生之我在暑假学习微服务第十一天《配置篇》+网关篇错误订正
java·学习·微服务·云原生·暑假
刘火锅20 小时前
Bug 记录:SecureRandom.getInstanceStrong()导致验证码获取阻塞
spring boot·spring·spring cloud·bug
sg_knight1 天前
Spring Cloud Gateway全栈实践:动态路由能力与WebFlux深度整合
java·spring boot·网关·spring·spring cloud·微服务·gateway
草履虫建模1 天前
RuoYi OpenAPI集成从单体到微服务改造全过程记录
java·运维·vue.js·spring cloud·微服务·云原生·架构
橘子编程1 天前
SpringBoot核心特性详解
java·jvm·spring boot·spring·spring cloud·tomcat
Code季风1 天前
Redis 分布式锁深度解析:setnx 命令的核心作用与实现
redis·分布式·微服务
毛小茛1 天前
Spring AMQP 入门与实践:整合 RabbitMQ 构建可靠消息系统
spring·rabbitmq·java-rabbitmq