| 特征 | 说明 |
|---|
| 服务自治 | 独立开发、部署、运维 |
| 单一职责 | 每个服务聚焦一个业务能力 |
| 去中心化 | 数据和治理去中心化 |
| 技术异构 | 各服务可选择不同技术栈 |
| 弹性设计 | 故障隔离,优雅降级 |
| 维度 | 单体 | 微服务 |
|---|
| 部署 | 整体部署 | 独立部署 |
| 扩展 | 整体扩展 | 按需扩展 |
| 技术栈 | 统一 | 异构 |
| 故障影响 | 全局 | 局部 |
| 开发效率 | 小团队高 | 大团队高 |
| 运维复杂度 | 低 | 高 |
| 策略 | 说明 | 示例 |
|---|
| 按业务能力 | 围绕业务功能 | 用户服务、订单服务 |
| 按子域 | DDD限界上下文 | 商品子域、支付子域 |
| 按事务 | 事务边界 | 跨事务拆为不同服务 |
| 按变更频率 | 独立变化的拆开 | 核心功能 vs 辅助功能 |
| 原则 | 说明 |
|---|
| 高内聚 | 相关功能放在同一服务 |
| 松耦合 | 服务间依赖最小化 |
| 独立数据 | 每个服务有自己的数据库 |
| 有界上下文 | 明确的服务边界 |
客户端 → [API网关] → 服务A
→ 服务B
→ 服务C
| 职责 | 说明 |
|---|
| 路由转发 | 请求路由到后端服务 |
| 认证授权 | 统一身份认证 |
| 限流熔断 | 流量控制和保护 |
| 协议转换 | REST ↔ gRPC |
| 聚合裁剪 | 响应聚合和字段裁剪 |
| 日志监控 | 统一日志和指标采集 |
| 模式 | 说明 | 适用场景 |
|---|
| 单一网关 | 一个网关处理所有请求 | 小规模 |
| BFF网关 | 每种客户端一个网关 | 多端适配 |
| 网关网格 | 每个服务一个Sidecar | 服务网格 |
| 模式 | 说明 | 工具 |
|---|
| 客户端发现 | 客户端查询注册中心 | Eureka、Nacos |
| 服务端发现 | 通过负载均衡器路由 | Nginx、AWS ALB |
| 模式 | 说明 | 适用场景 |
|---|
| 同步REST | HTTP请求-响应 | 简单查询 |
| 同步gRPC | 高性能RPC | 服务间高频调用 |
| 异步消息 | 消息队列 | 解耦、削峰 |
| 事件驱动 | 事件总线 | 最终一致性 |
用户服务 → 用户数据库
订单服务 → 订单数据库
商品服务 → 商品数据库
| 模式 | 一致性 | 复杂度 | 适用场景 |
|---|
| 2PC | 强一致 | 高 | 传统企业应用 |
| TCC | 最终一致 | 高 | 金融场景 |
| Saga | 最终一致 | 中 | 长事务 |
| 本地消息表 | 最终一致 | 低 | 简单场景 |
Saga模式:
正向: T1 → T2 → T3 → 完成
补偿: T1⁻¹ ← T2⁻¹ ← T3失败
| 维度 | 工具 | 说明 |
|---|
| 日志 | ELK、Loki | 事件记录 |
| 指标 | Prometheus、Grafana | 量化度量 |
| 追踪 | Jaeger、Zipkin | 请求链路 |