# 01.微服务-架构认识

# 1.架构演进总览

架构阶段 核心技术 核心思想 拆分方式
单体架构 ORM 大一统 所有模块在一个进程内
垂直架构 MVC 按业务线拆分 拆成多个独立单体应用
分布式服务架构 RPC 前后端 + 服务拆分 按 “前后端 + 服务层” 拆分
SOA 架构 ESB/Dubbo 服务总线统一治理 面向服务、依赖 ESB 总线
微服务架构 Spring Cloud 去中心化、服务自治 按领域拆成小而独立的微服务

# 2.各架构的优缺点与区别

  1. 单体架构(ORM 阶段)

核心特点:

  • 一个工程包,包含前端、后端、数据库访问所有代码
  • 部署方式:打成一个 war/jar 包,扔到服务器运行
  • 典型技术栈:SSM、Spring Boot 单应用

优点

  • 开发、测试、部署都极简单,无分布式复杂度
  • 性能高:进程内调用,无网络开销
  • 运维成本低:只需要维护一个服务

缺点

  • 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护
  • 项目模块之间紧密耦合,单点容错率低
  • 无法针对不同模块进行优化和扩展
  1. 垂直架构(MVC 阶段)

核心特点

  • 按业务线拆分,比如电商拆成「用户系统、订单系统、商品系统」
  • 每个业务线都是独立的单体应用,互不依赖
  • 典型技术栈:多套独立的 SSM/Spring Boot 项目

优点

  • 实现了流量分担,解决了并发问题,可以针对不同模块进行优化和扩展
  • 一个系统的问题不会影响到其他系统,提高容错率

缺点

  • 系统之间相互独立,无法进行相互调用,会有重复的开发任务
  1. 分布式服务架构(RPC 阶段)

核心特点

  • 把「前后端应用」和「通用服务层」拆分
  • 公共服务(如用户、订单、支付)下沉为独立服务,供多个上层应用调用
  • 典型技术:Dubbo、Thrift 等 RPC 框架

优点

  • 公共服务复用,解决了垂直架构的重复开发问题
  • 服务可以独立部署、扩容,粒度比垂直架构更细
  • 前后端应用和服务解耦,服务升级不影响上层应用

缺点

  • 依赖复杂: 随着服务增多,服务之间的调用关系错综复杂,系统耦合度高,难以维护。
  1. SOA 架构(ESB/Dubbo 阶段)

核心特点

  • 面向服务架构,引入 ESB(企业服务总线) 做统一治理
  • 所有服务调用都经过总线,由总线做路由、协议转换、监控
  • 典型技术:Dubbo + ESB、WebService

优点:

  • 通过注册中心和ESB解决了服务间调用的自动调节和统一管理问题。(不限语言)

缺点:

  • 服务间有依赖关系,一旦某个环节出错影响较大(服务雪崩)

  • 服务关系复杂,运维困难

  1. 微服务架构(Spring Cloud 阶段)

核心特点

  • 按领域驱动设计(DDD) 拆分为小而自治的微服务
  • 去中心化治理,无统一总线,服务之间通过轻量级协议(HTTP/REST)通信
  • 每个微服务独立开发、部署、扩容,甚至可以用不同技术栈
  • 典型技术:Spring Cloud / Spring Cloud Alibaba 生态

优点:

  • 服务原子化拆分,独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展
  • 微服务之间采用Restful等轻量级http协议相互调用

缺点:

  • 复杂度极高,带来了分布式事务、数据一致性、链路追踪、服务熔断等一系列技术挑战。
  • 运维成本暴涨,需要完善的自动化运维基建(如容器化K8s、CI/CD流水线)支撑。

微服务架构与SOA架构的不同

维度 SOA (面向服务的架构) 微服务架构
核心目标 企业异构系统集成与复用 敏捷开发、快速迭代与弹性扩展
通信中枢 ESB (企业服务总线),中心化治理 轻量级API (REST/gRPC),去中心化
服务粒度 较粗,按业务领域划分 极细,严格遵循单一职责
数据存储 倾向于共享数据库 每个服务拥有独立数据库
部署方式 集中式部署 (虚拟机/物理机) 独立部署,高度适配容器化(K8s)

微服务架构比SOA架构粒度会更加精细,让专业的人去做专业的事情,目的提高效率,每个服务与服务之间互不影响。

微服务架构中,每个服务必须独立部署。

微服务架构更加轻巧。

SOA架构中可能数据库存储发生共享,微服务强调每个服务是单独的数据库。

# 3.微服务架构的常见问题

  • 这么多小服务,如何管理他们?(服务治理注册中心[服务注册发现剔除])nacos

  • 这么多小服务,他们之间如何通讯?(restful rpc dubbo feign)httpclient("url",参数),springBoot restTemplate("url",参数),,feign

  • 这么多小服务,客户端怎么访问他们?(网关)gateway

  • 这么多小服务,一旦出现问题了,应该如何自处理? (容错)

  • 这么多小服务,一旦出现问题了,应该如何排错?(链路追踪)

以上这些下面都会一一学习

# 4.微服务对应版本

版本说明 · alibaba/spring-cloud-alibaba Wiki (opens new window)

最近更新: 9/19/2026, 1:27:08 PM
编程NOTE   |