分布式系统与微服务
本文件是长期稳定导航入口,不再承载机制正文。概念、原理、数据演绎、故障边界、项目证据和面试长答案均以
00至08分册为唯一权威来源;本入口只保留学习顺序、边界摘要、项目入口、题库入口和旧正文迁移说明。
1. 简历关联
本模块对应简历中的微服务演进、分布式一致性、服务治理、分布式事务、灰度发布、库存防超卖、支付资金一致性、跨境物流、异步任务、Runner(执行器)调度、WMS(仓储管理系统)和 IoT(物联网)报警风暴治理。
面试官通常会沿三层追问:先问为什么拆或不拆,再问边界、一致性与治理如何落地,最后用超时、重复、乱序、脑裂、灰度污染或外部副作用检验方案是否真正可恢复。根入口不直接回答这些问题,机制答案统一进入对应分册。
2. 面试主线
建议按下面顺序组织回答:
- 架构判断:先说明单体、模块化单体和微服务各自适用条件,以及拆分收益能否覆盖组织与运行成本。
- 边界判断:再说明服务边界、事务边界、数据所有权、可观测性边界和组织成本是否一致。
- 正确性判断:区分副本一致性、事务一致性和业务最终一致,明确分区、超时与未知结果下的取舍。
- 韧性判断:说明超时预算、有限重试、幂等、隔离、限流、熔断、降级与恢复放量如何组合。
- 副作用判断:支付、物流、通知、文件和设备控制等外部动作必须依靠查证、状态机、补偿、对账和人工出口收敛。
- 项目证据:用具体量级、权威数据源、幂等键、状态变化、监控指标和事故复盘证明方案有效。
图一:从架构判断到项目证据的学习导航
flowchart LR
A["00<br/>路线、迁移与版本边界"] --> B["01<br/>演进、拆分与成本"]
B --> C["02<br/>领域边界与数据所有权"]
A --> D["03<br/>一致性、复制与脑裂"]
D --> E["04<br/>服务治理与韧性"]
C --> F["05<br/>事务、补偿与消息一致性"]
D --> F
E --> G["06<br/>配置、灰度、多租户与安全"]
B --> H["07<br/>项目案例与事故排障"]
C --> H
D --> H
E --> H
F --> H
G --> H
H --> I["08<br/>综合面试题库"]3. 00 至 08 分册导航
| 编号 | 权威分册 | 适合解决的问题 |
|---|---|---|
00 | 知识图谱、迁移路线与版本边界 | 从哪里开始学、旧资产迁到哪里、哪些结论依赖具体版本、跨模块正文归谁维护 |
01 | 单体到微服务演进、拆分原则与成本模型 | 何时不拆、何时迁出、如何量化分布式成本、什么情况下合并回迁 |
02 | DDD(领域驱动设计)、限界上下文、聚合与数据所有权 | 如何从业务事实划边界、谁拥有数据、跨域查询与共享库如何治理 |
03 | CAP(一致性、可用性、分区容错)、BASE(基本可用、软状态、最终一致)、Quorum(法定人数)、时钟与脑裂 | 分区时如何取舍、复制如何确认、法定人数交集有什么边界、旧主写入如何拒绝 |
04 | 服务治理、注册发现、负载均衡与韧性 | 超时、重试、幂等、限流、熔断、隔离、恢复放量和观测证据如何组合 |
05 | 分布式事务、补偿与消息一致性 | 本地事务、协调事务、业务补偿、可靠消息、未知结果和人工兜底如何选 |
06 | 配置、网关、灰度、兼容、多租户与安全边界 | 配置变更、路由、接口兼容、共享资源污染、租户隔离和信任边界如何治理 |
07 | 项目案例与事故排障 | 如何把机制转换成项目话术、事故证据链、止血方案和恢复验证 |
08 | 综合面试题库 | 如何按结论、约束、机制链、失败边界、项目证据和验证闭环完成连续口述 |
正文维护规则:机制只在上述唯一责任分册中更新;其他位置只给摘要和真实相对链接,不复制长答案,不形成第二份权威结论。
4. 版本边界摘要
具体小版本、默认值、配置键和产品行为必须回到版本边界总表以及对应机制分册核对。本入口只保留下列长期稳定边界:
| 范围 | 长期稳定结论 | 不在入口固化的内容 |
|---|---|---|
| 分布式理论 | CAP(一致性、可用性、分区容错)讨论网络分区发生时的一致性与可用性取舍;事务一致性、副本一致性和业务最终一致必须分开 | 不把日常运行简化成无条件“三选二” |
| 框架兼容 | Spring Cloud(微服务框架)发布列车必须与 Spring Boot(快速开发框架)兼容矩阵一起核对 | 不写未经核对的发布列车、组件组合和默认配置 |
| 注册与配置 | Nacos(服务治理平台)不同大版本和小版本的协议、健康检查、鉴权与升级行为可能不同 | 不把单一版本行为泛化为永久事实 |
| 韧性治理 | Sentinel(流量治理框架)和 Resilience4j(容错库)的窗口、状态与组合顺序依赖实际版本和调用模型 | 不固化未经实测的阈值和默认值 |
| 分布式事务 | Seata(分布式事务框架)的 AT(自动事务模式)、TCC(Try Confirm Cancel,尝试确认取消)、Saga(长事务模式)、XA(扩展架构事务模式)能力边界不同;TX-LCN(事务协调框架)只作存量方案评估 | 不把任一框架宣传成外部副作用的万能强一致方案 |
| 可观测性 | OpenTelemetry(开放遥测标准)的传播、采样和语义约定要按实际版本核对,链路证据不能替代业务审计 | 不把采样数据当作完整业务账本 |
| 外部副作用 | 支付、物流、短信、文件和设备控制通常不能参与统一数据库事务 | 不省略幂等、查单、补偿、对账和人工闭环 |
5. 五类边界
微服务设计必须同时回答五类边界,任何一类说不清,都应回到 01 至 03 重新判断是否值得拆分。
| 边界 | 核心问题 | 最小证据 | 典型失败 |
|---|---|---|---|
| 服务边界 | 哪个业务能力需要独立演进、部署、扩容和故障隔离 | 变化频率、容量热点、故障域、团队所有权 | 按表、页面或技术层机械拆分 |
| 事务边界 | 哪些不变量必须在一次原子提交内成立 | 状态机、条件约束、失败窗口、补偿责任 | 服务一拆就默认跨服务强事务 |
| 数据所有权 | 谁是唯一权威写入方,其他方如何读取和订阅 | 写入入口、事件契约、读模型、审计流水 | 多个服务绕过所有者直接写同一数据 |
| 可观测性边界 | 什么证据能证明技术状态和业务状态 | 日志、指标、链路、业务流水、对账结果 | 用采样链路代替完整业务事实 |
| 组织成本 | 谁负责开发、发布、值班和平台治理 | 团队拓扑、发布节奏、告警责任、总成本 | 只计算机器和代码,不计算协作与认知负担 |
图二:从五类边界进入机制、项目和题库
flowchart TD
A{"先回答哪类问题"}
A --> B["是否值得拆<br/>服务边界与组织成本"]
A --> C["如何保证正确<br/>事务边界与数据所有权"]
A --> D["如何证明与恢复<br/>可观测性边界"]
B --> E["01 演进成本<br/>02 领域边界"]
C --> F["03 一致性<br/>05 事务补偿"]
D --> G["04 服务治理<br/>06 发布安全"]
E --> H["07 项目与事故"]
F --> H
G --> H
H --> I["08 综合口述"]6. 项目入口
项目案例统一由 07 维护;这里使用稳定题号直达口述入口,不复制案例长答案。
| 简历项目线 | 直接入口 | 回答时必须守住的底线 |
|---|---|---|
| WMS(仓储管理系统)服务演进 | 从模块化单体到微服务的演进 | 用发布冲突、容量热点和故障域证明拆分收益,同时保留回迁条件 |
| 库存防超卖 | 高并发库存预占与防超卖 | 数据库条件约束与预占流水是正确性底线,缓存锁不能成为唯一事实 |
| 支付资金一致性 | 支付回调、查单与账务入账 | 超时按未知结果处理,以状态机、账务守恒、对账和人工差错闭环收敛 |
| 跨境物流 | 轨迹重复、乱序与最终态冲突 | 保留原始事实和规则版本,投影状态不得因迟到事件倒退 |
| 异步任务 | 可恢复、可取消的异步导出 | 持久任务意图、分片状态、资源隔离和产物幂等必须可审计 |
| Runner(执行器)调度 | 租约、心跳与 Fencing Token(栅栏令牌) | 租约负责活性,单调栅栏负责拒绝失租执行者的迟到写 |
| IoT(物联网)报警风暴 | 报警聚合、背压与严重告警保护 | 原始事实可追溯,普通通知可降级,严重告警和租户保底通道不可被挤占 |
7. 题库入口
| 训练目标 | 入口 | 使用方式 |
|---|---|---|
| 旧模块题起点 | 旧题 legacy-bank-01 | 从“为什么演进到微服务”开始完整口述 |
| 旧模块题终点 | 旧题 legacy-bank-25 | 用业务正确、交付自治、运行韧性、数据边界和总成本评价体系健康度 |
| 全量综合题 | 综合面试题库 | 前 25 道保留旧模块题稳定标识,后续题补充一致性、时钟、安全、多租户和事故决策 |
| 项目事故题 | 项目案例与事故排障题库 | 先给项目事实和故障证据,再沿机制链接回到 01 至 06 |
题库只负责压缩口述和连续追问;遇到定义、协议、数据流或失败窗口追问时,必须沿题内相对链接返回对应机制分册。
8. 图形索引
根入口只保留两张导航图。旧正文中的 11 张图按稳定标识进入下列唯一责任分册;具体图形、图注和失败分支以目标分册为准。
| 旧图稳定标识 | 图形主题 | 唯一入口 |
|---|---|---|
legacy-fig-01 | 单体、模块化单体、微服务与回迁 | 演进决策图 |
legacy-fig-02 | 微服务全量知识图谱 | 全量知识图谱 |
legacy-fig-03、legacy-fig-04、legacy-fig-06、legacy-fig-08 | 注册发现、远程调用、限流熔断、链路证据 | 服务治理与韧性图集 |
legacy-fig-05 | 本地事实、消息发布、消费与补偿失败窗口 | 分布式事务与消息一致性图集 |
legacy-fig-07 | 灰度路由、兼容与共享资源污染 | 灰度与兼容图 |
legacy-fig-09、legacy-fig-10、legacy-fig-11 | 供应链架构、库存预占与支付收敛 | 项目案例与事故图集 |
9. 旧正文迁移说明
旧根正文基线为 906 行,旧源对象哈希为 64758290bf4c4cf516ca4f7b446e8964e6812f8b。该哈希只用于识别迁移源,不代表当前导航入口的文件哈希,也不得因入口重写而改写。
旧正文不再作为机制答案的并行副本。迁移口径保留如下:
| 旧对象 | 数量 | 迁移说明 |
|---|---|---|
| 章节题 | 42 | 由 01 至 07 按 legacy-k-* 稳定标识升级为章节六字段题 |
| 模块题 | 25 | 由 08 按 legacy-bank-01 至 legacy-bank-25 保留题意并升级为综合口述题 |
| 旧题合计 | 67 | 42 + 25 = 67;机制正文归 01 至 07,题体闭环归 08 |
| Mermaid(图表语法)图 | 11 | 按本入口“图形索引”和 00 迁移账本进入唯一责任分册 |
| 表格 | 13 | 组件职责归 00,演进与拆分归 01,领域边界归 02,一致性归 03,治理归 04,事务归 05,项目数据归 07 |
| 数据演绎 | 3 | 重试风暴归 04;支付回调与库存补偿归 07 |
| 排查专题 | 3 | 调用超时、数据不一致和灰度事故统一归 07 的事故证据链 |
| 项目话术 | 4 | 演进归 01,稳定性归 04,分布式事务归 05,灰度发布归 06 |
| 复习项 | 10 | 由 00 的复习路线组织,并由 08 综合题库校验口述能力 |
迁移核对必须同时满足 67/67 道旧题、11/11 张图、13/13 张表、3/3 组数据、3/3 个排查专题、4/4 段项目话术和 10/10 项复习目标;总数相等不能替代逐项语义与链接核对。完整稳定标识、唯一去向和版本记录以迁移账本为准。
10. 快速复习入口
- 架构判断:
00 -> 01 -> 02 -> 03,回答为什么不默认拆、如何划边界、分区时如何取舍。 - 治理与事务:
03 -> 04 -> 05 -> 06,回答超时与重试如何放大、事务模式如何选择、发布如何兼容和回滚。 - 项目串讲:
01 -> 02 -> 04 -> 05 -> 06 -> 07,回答权威源、幂等键、状态机、补偿、指标、降级和人工闭环。 - 临场冲刺:
00 -> 07 -> 08,先用项目证据回答,再沿题内链接补足机制。
完成复习的判断标准不是“记住组件名”,而是能说清前提、状态推进、失败窗口、业务损失、观测证据、恢复步骤和不采用其他方案的原因。
