2019中文版初版权威学习地图
依据Chris Richardson英文初版与喻勇译2019中文版完整目录:建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界
2019中文版初版权威学习地图
本课程对应Chris Richardson著、喻勇译《微服务架构设计模式》,机械工业出版社2019年出版,ISBN 9787111624127,馆藏著录为前置26页、正文455页。英文原版为Manning 2018年10月初版,ISBN 9781617294549、520页。课程固定该初版的13章与44个模式,不混入当前第二版MEAP重新编排和新增的章节。
全书权威分母为13章、52个二级节、177个三级节,共242个编号目录节点;另设学习地图和总复习,共15页、45个交互视图和90道独立复习题。本页串联13章;正式目录分母由13个章节页承担。
学习目标
- 能解释“2019中文版初版权威学习地图”的正式目录节点,并把每个模式写成问题、约束、解决方案、结果与相关模式。
- 能绘制FTGO主体、服务、数据所有权、同步/异步边界和业务完成点,区分局部成功与最终业务成功。
- 能比较正常、超时、重复、乱序、部分失败与恢复轨迹,并用状态、遥测和业务对账验证“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
- 能设计完整目录映射、13章依赖图、44模式索引、版本边界记录,写出停止、恢复、回退和独立交接条件。
从一个可证伪的问题开始
先预测:用当前microservices.io网站或第二版MEAP目录替换2018/2019初版,会改变章节分母和模式关系,导致课程无法忠实对应用户书架中的版本。把预测写成可观察反例,再决定是否采用模式。模式不是技术标签,而是在特定约束中解决反复出现问题的决策;结果部分既包含收益,也包含采用后必须处理的新问题。
FTGO是全书贯穿案例。读者要沿同一订单标识追踪消费者、餐厅、厨房、配送、信用和通知状态,明确哪个服务拥有哪份事实、谁可修改、消息何时可重放、查询允许多旧、测试在哪层证明、发布如何停止和回退。验收不变量是:242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构。
核心词汇与初版边界
↡初版边界是“2019中文版初版权威学习地图”的第1个核心概念,必须同时说明问题、约束、机制、代价、失败反例和可观测证据、↡242个目录节点是“2019中文版初版权威学习地图”的第2个核心概念,必须同时说明问题、约束、机制、代价、失败反例和可观测证据、↡44个模式是“2019中文版初版权威学习地图”的第3个核心概念,必须同时说明问题、约束、机制、代价、失败反例和可观测证据、↡FTGO案例是“2019中文版初版权威学习地图”的第4个核心概念,必须同时说明问题、约束、机制、代价、失败反例和可观测证据、↡模式依赖图是“2019中文版初版权威学习地图”的第5个核心概念,必须同时说明问题、约束、机制、代价、失败反例和可观测证据
以上词汇都要回答六个问题:解决什么问题、受什么约束、状态由谁持有、失败如何传播、怎样恢复、用什么证据证明。2018/2019初版之后出现的第二版结构、云产品行为和模式补充只能作为迁移差异,不能改写本页正式目录。
原书目录逐节点重构
1. 第1章 逃离单体地狱
正式节点 1/13。 从FTGO单体的交付困境出发,推导微服务架构的结构、收益、代价、模式语言以及组织前提
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 1.1 迈向单体地狱的漫长旅程
- 1.2 为什么本书与你有关
- 1.3 你会在本书中学到什么
- 1.4 拯救之道:微服务架构
- 1.5 微服务架构的好处和弊端
- 1.6 微服务架构的模式语言
- 1.7 微服务之上:流程和组织
把“1. 第1章 逃离单体地狱”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“本章输入与版本契约”,输出进入“2. 第2章 服务的拆分策略”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
2. 第2章 服务的拆分策略
正式节点 2/13。 从系统操作、业务能力与DDD子域推导服务边界,并用内聚、耦合和API契约校验拆分结果
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 2.1 微服务架构到底是什么
- 2.2 为应用程序定义微服务架构
把“2. 第2章 服务的拆分策略”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“1. 第1章 逃离单体地狱”,输出进入“3. 第3章 微服务架构中的进程间通信”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
3. 第3章 微服务架构中的进程间通信
正式节点 3/13。 比较同步远程调用与异步消息,建立可演化API、部分失败、发现、顺序、去重和事务性消息的完整通信契约
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 3.1 微服务架构中的进程间通信概述
- 3.2 基于同步远程过程调用模式的通信
- 3.3 基于异步消息模式的通信
- 3.4 使用异步消息提高可用性
把“3. 第3章 微服务架构中的进程间通信”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“2. 第2章 服务的拆分策略”,输出进入“4. 第4章 使用Saga管理事务”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
4. 第4章 使用Saga管理事务
正式节点 4/13。 用一组本地事务和补偿动作维护跨服务数据一致性,比较协同与编排,并显式处理Saga缺少隔离带来的异常
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 4.1 微服务架构下的事务管理
- 4.2 Saga的协调模式
- 4.3 解决隔离问题
- 4.4 Order Service和Create Order Saga的设计
把“4. 第4章 使用Saga管理事务”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“3. 第3章 微服务架构中的进程间通信”,输出进入“5. 第5章 微服务架构中的业务逻辑设计”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
5. 第5章 微服务架构中的业务逻辑设计
正式节点 5/13。 在六边形架构内比较事务脚本与领域模型,用DDD聚合建立一致性边界,并以领域事件连接服务协作
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 5.1 业务逻辑组织模式
- 5.2 使用DDD聚合模式设计领域模型
- 5.3 发布领域事件
- 5.4 Kitchen Service的业务逻辑
- 5.5 Order Service的业务逻辑
把“5. 第5章 微服务架构中的业务逻辑设计”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“4. 第4章 使用Saga管理事务”,输出进入“6. 第6章 使用事件溯源开发业务逻辑”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
6. 第6章 使用事件溯源开发业务逻辑
正式节点 6/13。 把聚合持久化为不可变事件流,处理并发、快照、幂等和事件演化,并把事件溯源与两类Saga协调方式组合
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 6.1 使用事件溯源开发业务逻辑
- 6.2 实现事件存储库
- 6.3 同时使用Saga和事件溯源
把“6. 第6章 使用事件溯源开发业务逻辑”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“5. 第5章 微服务架构中的业务逻辑设计”,输出进入“7. 第7章 在微服务架构中实现查询”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
7. 第7章 在微服务架构中实现查询
正式节点 7/13。 在服务各自拥有数据库的前提下比较API组合与CQRS,设计可重建、可追踪延迟和面向查询的数据视图
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 7.1 使用API组合模式进行查询
- 7.2 使用CQRS模式
- 7.3 设计CQRS视图
- 7.4 实现基于AWS DynamoDB的CQRS视图
把“7. 第7章 在微服务架构中实现查询”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“6. 第6章 使用事件溯源开发业务逻辑”,输出进入“8. 第8章 外部API模式”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
8. 第8章 外部API模式
正式节点 8/13。 为移动端、浏览器和合作伙伴建立稳定外部边界,比较API Gateway、BFF、响应式组合与GraphQL实现
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 8.1 外部API的设计难题
- 8.2 API Gateway模式
- 8.3 实现一个API Gateway
把“8. 第8章 外部API模式”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“7. 第7章 在微服务架构中实现查询”,输出进入“9. 第9章 微服务架构中的测试策略(上)”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
9. 第9章 微服务架构中的测试策略(上)
正式节点 9/13。 用测试金字塔和部署流水线确定反馈层级,并为实体、值对象、Saga、领域服务、控制器与消息处理器建立单元测试
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 9.1 微服务架构中的测试策略概述
- 9.2 为服务编写单元测试
把“9. 第9章 微服务架构中的测试策略(上)”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“8. 第8章 外部API模式”,输出进入“10. 第10章 微服务架构中的测试策略(下)”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
10. 第10章 微服务架构中的测试策略(下)
正式节点 10/13。 逐层验证持久化与通信适配器、消费者驱动契约、服务组件和少量端到端旅程,形成可定位的测试证据链
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 10.1 编写集成测试
- 10.2 编写组件测试
- 10.3 端到端测试
把“10. 第10章 微服务架构中的测试策略(下)”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“9. 第9章 微服务架构中的测试策略(上)”,输出进入“11. 第11章 开发面向生产环境的微服务应用”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
11. 第11章 开发面向生产环境的微服务应用
正式节点 11/13。 把安全、外部化配置、健康检查、日志、追踪、指标、异常与审计纳入服务契约,并用微服务基底复用横切能力
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 11.1 开发安全的服务
- 11.2 设计可配置的服务
- 11.3 设计可观测的服务
- 11.4 使用微服务基底模式开发服务
把“11. 第11章 开发面向生产环境的微服务应用”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“10. 第10章 微服务架构中的测试策略(下)”,输出进入“12. 第12章 部署微服务应用”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
12. 第12章 部署微服务应用
正式节点 12/13。 比较语言包、虚拟机、容器和Serverless四类部署模式,并以Kubernetes、零停机发布、服务网格和Lambda落实选择
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 12.1 部署模式:编程语言特定的发布包格式
- 12.2 部署模式:将服务部署为虚拟机
- 12.3 部署模式:将服务部署为容器
- 12.4 使用Kubernetes部署FTGO应用程序
- 12.5 部署模式:Serverless部署
- 12.6 使用AWS Lambda和AWS Gateway部署RESTful服务
把“12. 第12章 部署微服务应用”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“11. 第11章 开发面向生产环境的微服务应用”,输出进入“13. 第13章 微服务架构的重构策略”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
13. 第13章 微服务架构的重构策略
正式节点 13/13。 用绞杀策略渐进迁移单体,比较新功能服务化、前后端分离和提取业务能力,并设计反腐层、数据一致性与身份协作
本节的三级目录如下,均在本页展开而不合并成泛化主题:
- 13.1 重构到微服务需要考虑的问题
- 13.2 将单体应用重构为微服务架构的若干策略
- 13.3 设计服务与单体的协作方式
- 13.4 将新功能实现为服务:处理错误配送订单
- 13.5 从单体中提取送餐管理功能
把“13. 第13章 微服务架构的重构策略”放回“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”这条责任链:输入来自“12. 第12章 部署微服务应用”,输出进入“本章证据门与跨章连接”。先写主体、拥有的数据、命令或查询、同步与异步边界、可见完成点,再画正常、超时、重复、乱序、部分失败和恢复轨迹。不能用框架名称替代协议语义,也不能用组件健康替代“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。
实验固定FTGO业务样本、初版代码语义、数据、负载和观测窗口,只改变一个架构变量或故障。比较状态转移、P50/P95/P99、错误、队列滞后、重试放大、恢复时间和最终业务集合;若只有HTTP成功、消息已确认、Pod就绪或函数返回,而没有持久状态与业务对账,本节仍未通过。
模式决策矩阵
| 模式或机制 | 要解决的问题 | 核心机制 | 最小证据 |
|---|---|---|---|
| 架构与拆分 | 从单体走向服务需要边界 | 第1至2章建立目标与拆分 | 系统操作和服务责任 |
| 通信与数据 | 分布后出现失败和一致性 | 第3至7章处理通信、Saga、事件和查询 | 消息、状态和视图对账 |
| 边缘与质量 | 服务需要可测试可运营 | 第8至12章覆盖API、测试、生产与部署 | 契约、流水线和运行证据 |
| 渐进迁移 | 现有单体不能一次替换 | 第13章绞杀并转移能力 | 旧责任下降与回退 |
选择模式时先写“未采用会怎样”,再写采用后的新成本。例如同步RPC需要超时、断路器和发现;异步消息需要事务性发件箱、顺序、去重和死信;Saga需要补偿和隔离对策;CQRS需要视图水位与重建。相关模式组成因果链,不能独立打勾。
机制、状态与不变量
责任与数据所有权
服务只能通过API或消息公开能力,数据表、聚合事件流和查询视图都有唯一写入责任。一个业务命令可跨越多个服务,但每一步本地事务、发出的消息、预期回复、补偿和终态都必须可追踪。共享数据库、跨库联表和绕过API的“临时读取”会让边界失真,必须记录退出日期和删除证据。
完成点与失败语义
客户端收到响应、网关完成组合、消息代理确认、消费者写库、Saga进入终态、CQRS视图追上水位、Pod通过就绪和业务对账完成是不同检查点。超时表示结果未知,不等于失败;至少一次消息表示可能重复,不等于恰好一次业务副作用。恢复从持久事实继续,而不是从易失内存猜测。
可用性与放大效应
串行依赖近似满足 。每次失败都重试 次时,最坏尝试量接近 ;多层重试会相乘而非相加。该估算只用于发现方向性风险,生产结论还必须固定业务、数据、负载、版本和观测窗口,测量P50/P95/P99、错误、饱和度、队列滞后、恢复时间和最终业务集合。
可复现实现与证据格式
decision:
book: microservices-patterns-first-edition
unit: msp-official-learning-map
problem: "建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界"
invariant: business-state-reconciled
observe: [contract-version, state, trace, latency-p99, queue-lag, business]
stop: [error-budget-exhausted, invariant-broken]
rollback: verified-baseline// 业务状态与待发消息在同一个本地事务中提交;发布器可重试,消费者按消息ID幂等。
@Transactional
Result handle(Command command) {
Aggregate aggregate = repository.load(command.aggregateId());
Events events = aggregate.decide(command);
repository.save(aggregate, events.expectedVersion());
outbox.append(events.withCorrelation(command.correlationId()));
return Result.accepted(aggregate.id(), aggregate.version());
}experiment = fixed(ftgo-case, data, load, version, observation-window)
+ change(one boundary | failure | retry | ordering variable)
+ observe(api + message + state + telemetry + business result)
+ reconcile(expected invariant, durable terminal state)独立交接与跨章连接
交接包至少包含完整目录映射、13章依赖图、44模式索引、版本边界记录、初版目录映射、服务和数据所有权、API/事件模式、关联标识、失败状态机、测试层级、遥测查询、业务对账、停止与回退。另一位维护者必须能在无口头补充的情况下重放一个成功案例、一个超时未知案例、一个重复案例和一个恢复案例。
本页输出不是终点。它会成为后继模式的输入:边界产生通信,通信产生一致性与查询问题,分布式行为产生测试与可观测需求,运行单元产生部署问题,已有单体产生迁移问题。若后继问题没有负责人和证据门,当前选择尚未完成。
本章回顾
重新完成“建立13章、52个二级节、177个三级节和44个模式的依赖图,固定2019中文版初版与2018英文初版边界”:从初版目录和FTGO问题开始,明确主体、数据与契约,推导模式并记录收益和代价;再通过正常、超时、重复、乱序、部分失败和恢复实验,验证“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”。只有目录节点、机制轨迹和最终业务状态均可独立复现,本页才算完成。
复习与运行验收
练习
问题 1:本页为什么必须逐项覆盖正式目录?
问题 2:最小业务不变量是什么?
问题 3:怎样构造最小反例?
问题 4:为什么不能混入第二版目录?
问题 5:性能与恢复结论需要哪些证据?
问题 6:独立交接需要什么?
名词解释
本章出现的专业名词,用大白话再讲一遍。
- 初版边界
初版边界在本页不是孤立名词;它必须服务于“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”,并能由版本、契约、状态轨迹、故障注入和最终业务对账独立证明。
- 242个目录节点
242个目录节点在本页不是孤立名词;它必须服务于“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”,并能由版本、契约、状态轨迹、故障注入和最终业务对账独立证明。
- 44个模式
44个模式在本页不是孤立名词;它必须服务于“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”,并能由版本、契约、状态轨迹、故障注入和最终业务对账独立证明。
- FTGO案例
FTGO案例在本页不是孤立名词;它必须服务于“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”,并能由版本、契约、状态轨迹、故障注入和最终业务对账独立证明。
- 模式依赖图
模式依赖图在本页不是孤立名词;它必须服务于“242个编号目录节点全部可达,每个模式能回指问题、约束、解决方案、结果、相关模式和可复现实验,不混入第二版新增结构”,并能由版本、契约、状态轨迹、故障注入和最终业务对账独立证明。