微服务的一个关键优势是能够独立扩展每个服务以匹配其自身负载,而不是扩展整个应用。找到瓶颈然后成为衡量每个服务和每个路径的问题。
扩展技术
- 水平扩展 — 在负载均衡器后面添加无状态实例。
- 自动扩展 — 基于 CPU、内存、队列深度或自定义指标扩展。
- 缓存 — 减少重复工作和下游负载。
- 异步 + 队列 — 吸收尖峰;解耦缓慢工作。
- 数据扩展 — 读副本、分片、按服务的数据存储。
# Kubernetes HPA: scale orders on CPU
minReplicas: 3
maxReplicas: 20
metric: cpu
targetUtilization: 70 # add pods when avg CPU > 70%
1. Metrics: which service has high latency / saturation? (RED/USE)
2. Traces: which SPAN in the request is slow?
3. Drill in: DB query? lock? N+1 calls? GC pause?
Gateway ──┤ Orders ──┤ Payments ████████████ ← 80% of latency here
Inventory ─┤
⚠️ Chatty synchronous calls (fan-out per request)
⚠️ Shared/overloaded database
⚠️ Missing or cold cache
⚠️ Unbounded retries amplifying load
扩展瓶颈为共享数据库的服务只是将更多负载转移到数据库上 — 扩展实际的约束,而不是症状。
独立扩展让您能够精确地在负载所在的地方花费容量,这比整体扩展单体应用便宜得多。
但盲目扩展会浪费成本并可能使情况恶化;衡量每个服务的指标和每个路径的追踪才能告诉您真正需要修复的约束。