TL;DR(30 秒扫完)
- 演进脉络:单体 → 单机上限 → 横向扩容 → 独立扩缩容需求 → 微服务
- 7 大特征(Martin Fowler):围绕业务组织、去中心化治理、去中心化数据、轻量通信、基础设施自动化、设计失败、组合而非继承
- 5 大优势:独立部署、故障隔离、按需扩展、多团队并行、技术栈灵活
- 5 大代价:分布式一致性、跨服务调用损耗、治理复杂度、可观测性、调试排障
- 原则:Monolith First, Microservices Second;团队小于 8 人先做单体
关键结论
结论 A微服务的核心动机是独立扩缩容和团队并行,不是性能更好
结论 BMartin Fowler 7 大特征里"去中心化数据"最关键——每个服务自己 DB,不共享
结论 C拆分边界按 DDD 限界上下文(Bounded Context),而非按技术层(web/service/dao)
结论 D康威定律(Conway's Law)——系统架构最终反映组织的沟通结构
完整讲解(费曼四步)
STEP 1 · 概念
微服务是一种架构风格,把一个大型应用拆成一组独立部署、轻量通信、围绕业务的小服务,每个服务有自己的数据库。STEP 2 · 大白话
单体演进类比:一家小店从夫妻店(单体)→ 开到分店(横向扩容)→ 发现每间分店都要同时开门(浪费)→ 变成不同品牌的专业店(微服务),每店独立经营。STEP 3 · 底层
演进脉络:单体应用(Simple)
↓ 单机瓶颈
多实例横向扩容(无状态前提)
↓ 无法按需扩缩容(用户服务要 20 副本,支付只需 2)
按功能垂直拆分
↓ SOA(企业服务总线)
微服务(轻量通信 + DevOps)
Martin Fowler 7 大核心特征:- 围绕业务能力构建服务(如"用户服务""支付服务")
- 去中心化治理(技术选型自治)
- 去中心化数据管理(每个服务自己 DB)
- 智能端点 + 轻量通信(HTTP/gRPC/消息)
- 基础设施自动化(CI/CD 是必需的)
- 设计失败(服务可以独立失败演进)
- 组合而非继承
- 独立部署:支付改了只发支付,不影响用户
- 故障隔离:一个服务挂了不拖垮整个系统
- 按需扩展:按业务量给服务单独扩缩容
- 多团队并行:一个团队一个服务,符合康威定律
- 技术栈灵活:支付用 Go、用户用 Java
- 分布式一致性:数据不在一起,2PC/TCC/SAGA/本地消息表各种方案
- 跨服务调用损耗:RPC 网络调用比内调用慢
- 服务治理复杂度:注册中心、网关、熔断、限流、链路追踪都要搭
- 可观测性挑战:一个请求跨 5 个服务,出问题很难定位
- 分布式事务:需要专门的事务框架
- 高内聚低耦合、单一职责
- 按业务限界上下文(DDD),不按技术层
- 避免共享数据库
- 避免循环依赖
- 控制爆炸半径
- 团队小于 8 人
- 业务还没跑通
- 迭代频繁还未稳定
- 性能敏感场景
- Amazon 原则:Monolith First, Microservices Second
STEP 4 · 简化
口诀:微服务不是新技术,是新治理方式;核心动机独立扩缩容+团队并行,主要代价是分布式复杂性;团队小先做单体。
常见误区
"微服务性能更好"
微服务间是 RPC 网络调用,通常比单体内调用慢。微服务赢在可扩展性、隔离性、团队敏捷,不赢单机性能
把多语言当主要优势
90% 微服务体系都是 Java/Go 单栈为主,多语言是次要好处
按技术层(web/service/dao)拆
按业务限界上下文拆(DDD),一个服务管一个业务域
延伸追问
什么时候不该用微服务?
要点:团队小于 8 人、业务没跑通、迭代频繁还未稳定、性能敏感场景。Monolith First, Microservices Second。
拆分微服务有哪些原则?
要点:高内聚低耦合、单一职责、避免共享状态和数据库、避免循环依赖、按业务能力而非技术层拆、控制爆炸半径。
微服务如何通信?同步 vs 异步怎么选?
要点:强一致、需要同步返回 → REST/gRPC;解耦、削峰、最终一致 → MQ。远程调用要超时+重试+熔断+幂等。
康威定律是什么?为什么对微服务重要?
要点:系统架构最终会反映组织的沟通结构。所以微服务的拆分必须匹配团队边界,一个团队负责一个服务,避免跨团队调用。
速查表
演进:单体 → 横向扩容 → 独立扩缩容需求 → 微服务
7 特征(Fowler):业务组织/去中心化治理/去中心化数据/轻量通信/自动化/设计失败/组合
5 优势:独立部署/故障隔离/按需扩展/多团队并行/技术栈灵活
5 代价:分布式一致性/跨服务损耗/治理复杂度/可观测性/分布式事务
拆分边界:DDD 限界上下文,非技术层
原则:Monolith First, Microservices Second
康威定律:架构反映组织沟通结构
Anki 候选卡片
Q: 微服务 7 大核心特征(Martin Fowler)?
A: 围绕业务组织/去中心化治理/去中心化数据/智能端点+轻量通信/基础设施自动化/设计失败/组合而非继承
Q: 微服务的核心动机是什么?
A: 独立扩缩容 + 团队并行;不是性能更好
Q: 微服务的 5 大代价?
A: 分布式一致性/跨服务调用损耗/服务治理复杂度/可观测性挑战/分布式事务
Q: 拆分微服务按什么边界?
A: DDD 限界上下文(Bounded Context),而非技术层(web/service/dao)
Q: 康威定律?
A: 系统架构最终会反映组织的沟通结构;微服务拆分必须匹配团队边界
Q: 什么时候不该用微服务?
A: 团队小于 8 人、业务未跑通、迭代频繁、性能敏感——Monolith First, Microservices Second
关联题目
关联知识
7 大特征(Fowler)+ 5 优势 + 5 代价;核心动机是独立扩缩容+团队并行
✦ 记 忆 口 诀 ✦
Fowler 7 特征 / 独立扩缩容+团队并行 / Monolith First
关键可视化
暂无可视化
知识关系
⬆️ 前置(Prerequisite)
暂无🔄 延伸(Extends)
暂无⚡ 对比(Contrast)
暂无
🎯 概念
📏 规则
⚠️ 误区
🔍 追问
✨ 口诀
共 0 张卡,点击翻面