前置知识: 云计算

微服务架构

00:00
3 min Intermediate 2026/6/14

微服务架构设计:拆分策略、通信模式、数据管理与服务治理详解。

1. 微服务概述

1.1 什么是微服务

微服务是一种将应用拆分为一组小型、独立部署的服务的架构风格。

1.2 与单体架构对比

对比项单体架构微服务架构
部署整体部署独立部署
技术栈统一异构
扩展整体扩展按需扩展
故障全局影响局部影响
团队集中分散
复杂度代码复杂运维复杂

1.3 何时使用微服务

场景推荐
小团队/初创单体
大型复杂系统微服务
快速验证单体
高并发/多团队微服务

2. 服务拆分策略

2.1 拆分原则

原则描述
单一职责每个服务一个业务能力
高内聚相关功能放在一起
松耦合服务间依赖最小化
独立部署可独立发布
数据自治每个服务有自己的数据库

2.2 拆分方法

方法描述
按业务能力围绕业务功能拆分
按子域DDD 限界上下文
按用例围绕用户场景
按数据围绕数据所有权

2.3 DDD 限界上下文

┌──────────────┐  ┌──────────────┐  ┌──────────────┐
│  订单上下文    │  │  库存上下文    │  │  支付上下文    │
│              │  │              │  │              │
│ OrderService │  │InventorySvc  │  │PaymentService│
│ OrderDB      │  │InventoryDB   │  │PaymentDB     │
└──────────────┘  └──────────────┘  └──────────────┘

3. 服务通信

3.1 同步通信

方式协议特点
RESTHTTP/JSON简单、通用
gRPCHTTP2/Protobuf高性能、强类型
GraphQLHTTP/JSON灵活查询

3.2 异步通信

方式协议特点
消息队列AMQP解耦、削峰
事件驱动Kafka高吞吐、持久化
事件总线Redis Streams轻量级

3.3 通信模式

模式描述适用场景
请求-响应同步调用查询类
事件通知异步通知状态变更
事件溯源存储所有事件审计、回放
CQRS读写分离复杂查询

3.4 Saga 模式

分布式事务管理:

编排式

OrderService → CreateOrder → ReserveInventory → ProcessPayment → ConfirmOrder
                                      ↓ 失败
                              CancelOrder ← RefundPayment

协调式

Saga Coordinator → 调用各服务 → 失败时发送补偿命令

4. 数据管理

4.1 数据库每服务一个

 每个服务有独立数据库
 服务间直接访问其他服务的数据库
 通过 API 或事件共享数据

4.2 数据一致性

策略描述
强一致性2PC(不推荐)
最终一致性Saga + 事件
补偿事务失败时回滚

4.3 API 组合

API Gateway → 聚合多个服务的数据 → 返回给客户端

GET /order-details/123
  → OrderService: 订单信息
  → InventoryService: 库存状态
  → PaymentService: 支付状态
  → 组合返回

5. 服务治理

5.1 服务发现

方式描述
客户端发现客户端查询注册中心
服务发现负载均衡查询注册中心

5.2 负载均衡

策略描述
轮询依次分配
随机随机分配
加权按权重分配
最少连接分配连接最少的

5.3 熔断器

// 熔断器状态机
CLOSED → (错误率超阈值) → OPEN
OPEN → (超时后) → HALF_OPEN
HALF_OPEN → (探测成功) → CLOSED
HALF_OPEN → (探测失败) → OPEN

5.4 限流

算法描述
固定窗口固定时间窗口计数
滑动窗口平滑计数
令牌匀速生成令牌
漏桶匀速消费请求

6. 微服务最佳实践

实践描述
API 版本/api/v1/resource
幂等设计重复请求结果一致
健康检查/health 端点
优雅降级依赖失败时的备选方案
配置外部化环境变量/配置中心
可观测性日志+指标+追踪
契约测试消费者驱动契约
CI/CD每个服务独立流水线

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式