flowchart TD
A["🏗️ 架构演进"] --> B["📦 单体架构"]
B --> B1["所有模块\n打包在一个应用"]
B1 --> B2["❌ 部署困难\n扩展性差"]
B2 --> B3["❌ 技术栈单一\n团队协作难"]
A --> C["🔄 微服务架构"]
C --> C1["每个模块\n独立部署"]
C1 --> C2["✅ 独立扩展\n技术多样"]
C2 --> C3["✅ 团队自治\n快速迭代"]
style B fill:#ffcdd2
style C fill:#c8e6c9
1.2 微服务的核心特征
flowchart TD
A["✨ 微服务核心特征"] --> B["🏷️ 服务单一职责"]
A --> C["🔗 轻量级通信"]
A --> D["📦 独立部署"]
A --> E["🧩 去中心化管理"]
A --> F["🔍 基础设施自动化"]
B --> B1["每个服务只做好\n一件事"]
C --> C1["HTTP API\n消息队列"]
D --> D1["独立进程\n独立数据库"]
E --> E1["技术选型自由\n数据自主管理"]
F --> F1["CI/CD\n容器化"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#c8e6c9
style D fill:#e3f2fd
style E fill:#fff3e0
style F fill:#f8bbd0
1.3 微服务带来的挑战
挑战
说明
解决方案
服务治理
服务如何被发现和调用
Nacos、Eureka
负载均衡
如何分配请求
Ribbon、LoadBalancer
网关路由
统一入口和权限
Gateway
配置管理
配置文件分散如何管理
Config、Nacos
服务熔断
单个服务故障如何处理
Sentinel、Hystrix
分布式事务
跨服务数据一致性
Seata
日志追踪
分布式日志如何聚合
Sleuth、Zipkin
二、Spring Cloud 生态系统
2.1 Spring Cloud 组件全景图
flowchart TD
A["☁️ Spring Cloud 生态"] --> B["🛤️ 服务注册发现"]
A --> C["🚪 API 网关"]
A --> D["⚙️ 配置中心"]
A --> E["💥 服务熔断"]
A --> F["📡 服务调用"]
A --> G["📝 日志追踪"]
A --> H["🔐 安全认证"]
B --> B1["Nacos\nEureka\nConsul"]
C --> C1["Gateway\nZuul"]
D --> D1["Nacos Config\nSpring Cloud Config"]
E --> E1["Sentinel\nSentinel"]
F --> F1["OpenFeign\nRestTemplate"]
G --> G1["Sleuth\nZipkin"]
H --> H1["Spring Security\nOAuth2"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#c8e6c9
style D fill:#e3f2fd
style E fill:#fff3e0
style F fill:#f8bbd0
style G fill:#e3f2fd
style H fill:#fff3e0
2.2 版本对应关系
Spring Boot 版本
Spring Cloud 版本
主要特性
3.2.x
2023.0.x
最新稳定版
3.1.x
2022.0.x
Anniversary
3.0.x
2022.0.0
重大更新
2.7.x
2021.0.x
Kilburn
2.6.x
2021.0.3
稳定版
💡 推荐:新项目使用 Spring Boot 3.x + Spring Cloud 2023.0.x,享受最新特性和性能优化。
2.3 常见微服务架构模式
flowchart LR
A["🏗️ 微服务架构模式"] --> B["🛡️ 安全模式"]
A --> C["📊 日志追踪模式"]
A --> D["⚡ 高可用模式"]
A --> E["📈 可扩展模式"]
style A fill:#fff3e0
三、服务注册与发现:Nacos
3.1 Nacos 简介
Nacos(Naming and Configuration Service)是阿里巴巴开源的项目,专注于服务注册与发现和配置管理。
flowchart TD
A["🛤️ Nacos 核心功能"] --> B["📋 服务注册发现"]
A --> C["⚙️ 配置管理"]
A --> D["📊 命名服务"]
A --> E["🔄 动态配置更新"]
B --> B1["提供服务注册\n健康检查\n服务订阅"]
style A fill:#fff3e0
style B fill:#c8e6c9
OpenFeign 是 Spring Cloud 对 Feign 的封装,提供了声明式 REST 客户端,让服务调用像调用本地方法一样简单。
flowchart LR
A["🔗 OpenFeign 调用流程"] --> B["定义接口"]
B --> C["@FeignClient"]
C --> D["自动调用"]
D --> E["返回结果"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#c8e6c9
flowchart LR
A["⚖️ 负载均衡策略"] --> B["轮询\nRoundRobin"]
A --> C["随机\nRandom"]
A --> D["加权\nWeighted"]
A --> E["重试\nRetry"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#e3f2fd
style D fill:#fff3e0
style E fill:#f8bbd0
Spring Cloud Gateway 是 Spring Cloud 的第二代网关,基于 WebFlux 的响应式编程,性能比 Zuul 优秀很多。
flowchart TD
A["🚪 网关核心功能"] --> B["🌐 路由转发"]
A --> C["🔐 身份认证"]
A --> D["⚡ 限流熔断"]
A --> E["📊 日志监控"]
A --> F["🎭 过滤器"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#c8e6c9
style D fill:#e3f2fd
style E fill:#fff3e0
style F fill:#f8bbd0
flowchart LR
A["⚙️ 配置中心架构"] --> B["Config Server"]
B --> C["本地 Git 仓库"]
B --> D["Nacos Config"]
C --> E["Config Client\n(各微服务)"]
D --> E
style A fill:#fff3e0
style B fill:#c8e6c9
flowchart TD
A["🛡️ Sentinel 核心功能"] --> B["📊 流量控制"]
A --> C["💥 熔断降级"]
A --> D["🔗 系统自适应"]
A --> E["📈 实时监控"]
B --> B1["QPS 控制\n并发控制"]
C --> C1["响应时间熔断\n异常比例熔断"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#ffcdd2
style D fill:#e3f2fd
style E fill:#fff3e0
/** * 降级处理实现 */ @Component publicclassProviderFeignClientFallbackimplementsProviderFeignClient { @Override public String hello(String name) { return"😢 Service is currently unavailable"; } // ... }
九、消息驱动:Spring Cloud Stream
9.1 Stream 简介
Spring Cloud Stream 是消息中间件的抽象层,支持 RabbitMQ、Kafka、RocketMQ 等多种消息队列。
flowchart LR
A["📨 Spring Cloud Stream"] --> B["绑定器抽象"]
A --> C["发布-订阅模型"]
A --> D["消费组支持"]
B --> B1["RabbitMQ\nKafka\nRocketMQ"]
style A fill:#fff3e0
style B fill:#c8e6c9
flowchart TD
A["📁 microservice-project"] --> B["🛤️ gateway-service"]
A --> C["👤 user-service"]
A --> D["📦 order-service"]
A --> E["⚙️ config-service"]
A --> F["🛡️ sentinel-dashboard"]
B --> B1["端口 8080\n网关路由"]
C --> C1["端口 8081\n用户服务"]
D --> D1["端口 8082\n订单服务"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#c8e6c9
style D fill:#c8e6c9
flowchart TD
A["🔐 OAuth2 授权模式"] --> B["授权码模式\nAuthorization Code"]
A --> C["简化模式\nImplicit"]
A --> D["密码模式\nPassword"]
A --> E["客户端模式\nClient Credentials"]
B --> B1["✅ 最安全\n适合前后端分离"]
C --> C1["⚠️ 不推荐\n适合纯前端应用"]
D --> D1["⚠️ 不推荐\n信任内部系统"]
E --> E1["适合服务间调用"]
style A fill:#fff3e0
style B fill:#c8e6c9
style C fill:#fff3e0
style D fill:#fff3e0
style E fill:#e3f2fd
flowchart LR
A["微服务学习路线"] --> B["第一阶段\n基础入门"]
B --> C["第二阶段\n核心组件"]
C --> D["第三阶段\n服务治理"]
D --> E["第四阶段\n高级特性"]
B --> B1["微服务概念\nSpring Boot"]
C --> C1["Gateway\nNacos\nOpenFeign"]
D --> D1["Sentinel\nConfig\nSecurity"]
E --> E1["分布式事务\n链路追踪"]
style A fill:#fff3e0
style B fill:#e3f2fd
style C fill:#c8e6c9
style D fill:#fff3e0
style E fill:#f8bbd0