第1章 服务架构演进史
依据周志明2021纸书版与作者v1.0.20210629快照:从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么
第1章 服务架构演进史
本课程对应周志明著《凤凰架构:构建可靠的大型分布式系统》,机械工业出版社2021年6月出版,409页、约33万字,ISBN 9787111683919。课程以纸书正式目录和作者出版当月发布的v1.0.20210629快照为边界,不把后续持续更新的官网内容倒灌为原书章节。
全书正式分母为5部分、16章、54个正式节与附录A、B,共18个原书单元、77个唯一正式节点;另设学习地图和总复习,共20页。本页逐项覆盖6个目录节点,最终交付六时代对照表、能力迁移图、复杂性账本、选型退出条件。
学习目标
- 能解释“第1章 服务架构演进史”的6个目录节点,并绘制主体、状态、控制点、数据与信任边界。
- 能比较正常、压力、超时、重复、部分失败和恢复轨迹,判断组件完成点与业务完成点。
- 能设计并复现六时代对照表、能力迁移图、复杂性账本、选型退出条件,用日志、指标、追踪、状态和业务对账支持结论。
- 能分析“把微服务、云原生或无服务当作天然先进答案,跳过团队规模、部署能力和非功能需求”为何失败,并写出停止、恢复、回退和独立交接条件。
从一个可证伪的架构决策开始
先预测:当请求跨越进程、网络与基础设施边界时,谁接收、谁持有状态、谁重试、谁判定完成,哪里可能超时、重复或部分成功。观察前写下业务不变量和反例,再用同一请求标识贯穿日志、追踪、指标与最终数据。
“组件健康”不是“业务完成”。HTTP 200、事务协调器提交、注册中心有实例、Pod Running或代理配置已下发,都只是局部检查点。验收必须回到“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”,并说明该结论在2021纸书版之外是否仍成立。
核心词汇与版本边界
↡DCE是“第1章 服务架构演进史”的第1个核心概念,必须说明机制、适用边界、失败反例和可观测证据、↡单体是“第1章 服务架构演进史”的第2个核心概念,必须说明机制、适用边界、失败反例和可观测证据、↡SOA是“第1章 服务架构演进史”的第3个核心概念,必须说明机制、适用边界、失败反例和可观测证据、↡微服务是“第1章 服务架构演进史”的第4个核心概念,必须说明机制、适用边界、失败反例和可观测证据、↡无服务是“第1章 服务架构演进史”的第5个核心概念,必须说明机制、适用边界、失败反例和可观测证据
这些词构成本页词汇。每个词都要回答:它解决什么问题,依赖什么前提,状态由谁持有,失败如何传播,怎样恢复与观测,以及后续技术变化为何不能替换本书的正式分母。
原书目录逐节点重构
1.1 原始分布式时代
目录节点 1/6。 DCE、RPC、DFS与透明分布式理想揭示:远程调用不能伪装成本地调用,网络失败与延迟必须成为设计的一部分。
先把“1.1 原始分布式时代”放回“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”这条主线:输入来自“本单元输入与版本契约”,输出进入“1.2 单体系统时代”。画出主体、状态、控制点、数据与信任边界,分别标注同步成功、超时、重复、部分失败和恢复,不用一条正常箭头代替机制。
实验固定2021纸书版、业务样本、请求分布、服务版本和环境,只改变一个条件。比较状态轨迹、吞吐、P95/P99、错误、资源、业务结果与恢复时间,并用“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”验收;若证据只能证明组件状态,不能证明业务不变量,本节点仍未完成。
1.2 单体系统时代
目录节点 2/6。 单体以进程内调用、统一事务和集中部署换取简单性;其边界问题出现在规模、协作与独立发布,而非代码行数本身。
先把“1.2 单体系统时代”放回“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”这条主线:输入来自“1.1 原始分布式时代”,输出进入“1.3 SOA时代”。画出主体、状态、控制点、数据与信任边界,分别标注同步成功、超时、重复、部分失败和恢复,不用一条正常箭头代替机制。
实验固定2021纸书版、业务样本、请求分布、服务版本和环境,只改变一个条件。比较状态轨迹、吞吐、P95/P99、错误、资源、业务结果与恢复时间,并用“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”验收;若证据只能证明组件状态,不能证明业务不变量,本节点仍未完成。
1.3 SOA时代
目录节点 3/6。 SOA借企业服务总线、契约与编排推进复用和集成,但中心化治理也可能把组织耦合集中到总线上。
先把“1.3 SOA时代”放回“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”这条主线:输入来自“1.2 单体系统时代”,输出进入“1.4 微服务时代”。画出主体、状态、控制点、数据与信任边界,分别标注同步成功、超时、重复、部分失败和恢复,不用一条正常箭头代替机制。
实验固定2021纸书版、业务样本、请求分布、服务版本和环境,只改变一个条件。比较状态轨迹、吞吐、P95/P99、错误、资源、业务结果与恢复时间,并用“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”验收;若证据只能证明组件状态,不能证明业务不变量,本节点仍未完成。
1.4 微服务时代
目录节点 4/6。 微服务围绕业务能力自治部署,把局部变更速度提高,同时把事务、观测、网络和运维复杂性显性化。
先把“1.4 微服务时代”放回“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”这条主线:输入来自“1.3 SOA时代”,输出进入“1.5 后微服务时代”。画出主体、状态、控制点、数据与信任边界,分别标注同步成功、超时、重复、部分失败和恢复,不用一条正常箭头代替机制。
实验固定2021纸书版、业务样本、请求分布、服务版本和环境,只改变一个条件。比较状态轨迹、吞吐、P95/P99、错误、资源、业务结果与恢复时间,并用“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”验收;若证据只能证明组件状态,不能证明业务不变量,本节点仍未完成。
1.5 后微服务时代
目录节点 5/6。 容器、编排与服务网格尝试把通用分布式能力下沉到基础设施,让业务服务少承担非功能代码。
先把“1.5 后微服务时代”放回“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”这条主线:输入来自“1.4 微服务时代”,输出进入“1.6 无服务时代”。画出主体、状态、控制点、数据与信任边界,分别标注同步成功、超时、重复、部分失败和恢复,不用一条正常箭头代替机制。
实验固定2021纸书版、业务样本、请求分布、服务版本和环境,只改变一个条件。比较状态轨迹、吞吐、P95/P99、错误、资源、业务结果与恢复时间,并用“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”验收;若证据只能证明组件状态,不能证明业务不变量,本节点仍未完成。
1.6 无服务时代
目录节点 6/6。 函数与托管服务进一步转移资源管理责任,但冷启动、状态、可移植性和成本模型成为新的约束。
先把“1.6 无服务时代”放回“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”这条主线:输入来自“1.5 后微服务时代”,输出进入“本单元验收与跨章连接”。画出主体、状态、控制点、数据与信任边界,分别标注同步成功、超时、重复、部分失败和恢复,不用一条正常箭头代替机制。
实验固定2021纸书版、业务样本、请求分布、服务版本和环境,只改变一个条件。比较状态轨迹、吞吐、P95/P99、错误、资源、业务结果与恢复时间,并用“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”验收;若证据只能证明组件状态,不能证明业务不变量,本节点仍未完成。
本章机制闭环
输入、约束与责任
“第1章 服务架构演进史”的输入不是一个孤立请求,而是业务目标、数据语义、容量预算、故障假设与2021技术边界的组合。先用DCE、单体、SOA描述机制,再把微服务、无服务落实为可检查约束。调用者、平台、服务和依赖各自只对明确的状态负责;任何“框架会自动处理”的说法,都要展开为触发条件、持久状态、重试主体、超时上界和最终确认者。
状态、控制与完成点
沿“1.1 原始分布式时代”、“1.2 单体系统时代”、“1.3 SOA时代”、“1.4 微服务时代”、“1.5 后微服务时代”、“1.6 无服务时代”建立状态机:每次转移记录输入版本、决策、输出、耗时与关联标识。同步返回、消息已接收、配置已下发、实例已健康和数据已持久是不同完成点,不能互相替代。只有组件轨迹和“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”同时成立,才能把局部成功提升为业务成功。
失败、恢复与反事实
至少构造超时、重复、慢依赖、部分失败和恢复中断五类反例。先固定业务样本、负载、版本和观测窗口,再单独改变一个故障条件;记录请求放大、排队、错误、P95/P99、资源饱和、恢复时间与最终数据。恢复过程还要证明旧状态停止生效、重复副作用已消除、未完成工作有归宿,而不是看到组件重新变绿就结束。
证据、决策与交接
把六时代对照表、能力迁移图、复杂性账本、选型退出条件装入同一证据包:目录节点说明知识分母,配置与版本说明实验前提,日志、追踪、指标和状态快照说明机制轨迹,业务对账说明结果,停止与回退记录说明风险上界。架构决策记录必须同时列出选择、拒绝方案、收益、代价、适用期与复审触发器,使下一位维护者能够复现结论,而不是继承无法证伪的经验判断。
可复现决策与证据格式
decision:
unit: pha-01-architecture-evolution
baseline: phoenix-book-2021-v1.0.20210629
invariant: business-result-reconciled
observe: [state, latency-p99, errors, resources, business]
stop: [error-budget-exhausted, invariant-broken]
rollback: verified-baselinerequest -> edge -> service -> dependency -> state
| | | |
+ timeout + retry + isolate + reconcile
evidence = version + config + trace + metrics + final business statecomparison = fixed(business, data, load, version, observation-window)
+ change(one architecture variable)
+ measure(p50, p95, p99, errors, saturation, recovery)
+ reconcile(component state, user-visible result, durable state)独立证据与生产交接
目录证据保存5部分、16章、2附录与77个唯一节点映射;环境证据保存代码、运行时、中间件、集群和策略版本;运行证据用同一标识关联请求、日志、跨度、指标与最终业务状态。六时代对照表、能力迁移图、复杂性账本、选型退出条件必须能由另一位读者独立重放。
性能判断固定业务、数据、请求分布、版本和观测窗口,只改变一个架构变量。平均值会隐藏排队、慢实例、重试放大与恢复尖峰,必须保留P95/P99、错误、饱和度和恢复时间;提升吞吐但破坏不变量不算优化。
恢复判断从用户与持久状态结束。组件重新健康、代理重新连接或副本恢复只是阶段;还要核对未完成请求、重复副作用、数据收敛、旧版本停止服务和审计记录。
本章回顾
重新完成“从原始分布式、单体、SOA、微服务、后微服务到无服务,解释架构演进解决了什么、又引入了什么”:固定2021纸书版目录,从机制与责任边界推导方案,通过基线、压力与故障实验测量,最后交付六时代对照表、能力迁移图、复杂性账本、选型退出条件。只有“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”与最小反例都能独立重放,本页才算完成。
复习与运行验收
练习
问题 1:为什么“第1章 服务架构演进史”必须覆盖6个目录节点?
问题 2:本页最小不变量是什么?
问题 3:怎样构造最小反例?
问题 4:为什么不能用持续更新的官网直接替代纸书目录?
问题 5:如何验证性能和恢复结论?
问题 6:独立交接需要什么?
名词解释
本章出现的专业名词,用大白话再讲一遍。
- DCE
DCE在本页不是孤立名词,必须同时解释“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”所需的机制、边界、失败与证据。
- 单体
单体在本页不是孤立名词,必须同时解释“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”所需的机制、边界、失败与证据。
- SOA
SOA在本页不是孤立名词,必须同时解释“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”所需的机制、边界、失败与证据。
- 微服务
微服务在本页不是孤立名词,必须同时解释“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”所需的机制、边界、失败与证据。
- 无服务
无服务在本页不是孤立名词,必须同时解释“每次架构选择都同时写出业务驱动力、收益、代价与退出条件,不能把时间顺序误写成优劣排名”所需的机制、边界、失败与证据。