单题备考 · d01
微服务治理
真题出处:2021 年论文 试题四「论微服务架构及其应用」。本页给出一篇可直接背的合规论文 + 可交互治理演练台。
① 会考什么
- 概要叙述你所参与管理或开发的软件项目,以及你在其中所承担的主要工作。
- 简要描述微服务优点。
- 具体阐述如何基于微服务架构进行软件设计实现的。
频次与权重。按 docs/真题分析.md:架构风格/模式类 9 年出现 10 次以上,每年必有一题,是权重最高的族。同族的「云原生 / 微服务 / SOA / Serverless / EDA / 六边形」9 年共出现 5 次(2020 云原生、2021 微服务、2024下 SOA、2025下 Serverless、2026上 六边形),近三年连续不断。微服务本体 2021 年考过 1 次,但作为架构风格族的代表,仍是必练题。
② 一句话讲清
③ 机制讲解
微服务的治理可以拆成两条独立的链路来理解:入口的吞吐治理(网关连接管理)和运行时的故障容错(重试 / 超时 / 熔断 / 摘除)。下面两个演练台分别把这两条链路跑一遍,"不这么做会怎样"的对照就摆在数字里。
演练台 A · 网关连接池:吞吐的上限
网关每个请求是否复用 TCP 连接,决定了整条链路能扛多少 QPS。拖动请求速率、切换连接池,看指标。(教学模拟,真值见下方对照表)
演练台 B · 实例故障:治理开关的对照
2 个实例轮询,第 6 秒杀掉一个。切换「重试 / 熔断 / 健康摘除」,观察故障影响窗口与错误率怎么变。
④ 落到我们平台
网关 = 治理入口
fazi 平台的 gateway:反向代理 + 轮询负载均衡 + 全局连接池,全平台的流量都从这里进。E0 的连接池缺陷就出在这里。
服务 = DDD 限界上下文
会员、社交、存证、培训报名、法律咨询五个业务服务,各自独立部署、独立扩容,统一 Go + Gin。
注册发现 = 自研轻量组件
不引入重型注册中心。各实例启动注册、周期心跳,注册中心把健康列表下发给网关——用 PG 表 + 心跳即可。
取舍:能省则省
云托管容器服务承载实例;缓存用进程内缓存或 PG,不再引入独立缓存组件;把运维精力留给治理逻辑本身。
治理的边界也要说清:跨服务一致性我们用本地消息表 + 补偿做最终一致,而不是分布式事务框架;链路排查靠统一采集的请求量/错误率/时延分位数与熔断状态,把 MTTR 从 45 分钟压到 8 分钟。
⑤ 完整论文
六段全文(摘要 + 正文,约 2.5 千字)
⑥ 逐段拆解
字数口径为纯汉字(不含标点、数字、字母)。校验命令:bash scripts/verify-pages.sh d01。
| 段 | 讲什么 | 对题干 | 纯汉字 |
|---|---|---|---|
| 摘要 | 项目 + 主题 + 结果指标 | 总起 | 301(区间 300–330) |
| 一、项目背景 | 协会现状、我的职责、技术栈 | 第 1 问 | 459(定稿逐字) |
| 二、理论概述 | 微服务六优点 + 四条拆分原则 + 治理必要性 | 第 2 问 | 421(区间 320–440) |
| 三、实践一 | DDD 拆六服务 + 注册发现 + 网关连接池(E0 真值) | 第 3 问 | 391(区间 320–440) |
| 四、实践二 | 故障基线(E1 真值)+ 重试 / 超时熔断 / 降级 | 第 3 问 | 387(区间 320–440) |
| 五、实践三 | 健康摘除 + 限流 + 可观测 + 资源取舍与效果 | 第 3 问 | 335(区间 320–440) |
| 六、总结展望 | 体会、不足与改进、主题展望 | 收尾 | 251(区间 200–300) |
| 正文 P1–P6 合计(摘要另计) | 2244(区间 2000–2500) | ||
⑦ 答题要点
- 题干第 1 问(项目 + 我的职责)→ 本文第一段。
- 题干第 2 问(微服务优点)→ 本文第二段。
- 题干第 3 问(如何基于微服务架构设计实现)→ 本文第三、四、五段。
✅ 加分
- 优点不背概念,落到本项目:每条优点都对应平台的具体取舍。
- 三问齐全,三段实践分别回答拆分、容错、闭环,逻辑成链。
- 带真实数据与对照:网关吞吐、故障窗口、错误率——数据有对照才可信。
- 写出"快速失败 vs 响应变慢"这类区分,体现真做过而非背模板。
- 讲清资源受限下的取舍(自研注册中心、进程内缓存),符合一人全栈设定。
❌ 扣分
- 只堆微服务概念,不与项目、不与我承担的工作挂钩。
- 大段罗列中间件产品名(注册中心 / 网关 / 配置中心各来一串),却不讲怎么落地。
- 漏答三问中的任何一问,尤其把"优点"写成"缺点"。
- 数据自相矛盾:摘要写 MTTR 8 分钟,正文写 30 分钟。
- 拆得越细越好论:只讲拆分,不讲拆完之后的治理与容错。
⑧ 背诵清单
- 微服务 = 按业务能力拆成一组可独立部署的服务;优点是独立部署、技术异构、故障隔离、弹性扩展、团队自治、易于理解。
- 四条拆分原则:单一职责、DDD 限界上下文、数据自治、接口优先。
- 平台拆六个服务(网关 / 会员 / 社交 / 存证 / 培训报名 / 法律咨询),统一 Go + Gin。
- 网关连接池缺陷:修复前 3852 req/s、错误率 0.22%、p99 73ms;修复后 12918 req/s、错误率 0、p99 4ms。
- 故障基线:单实例宕机窗口 4~5 秒、窗口内错误率约 50%、累计近两万次 502;成功请求 p95 仍是 4ms(快速失败)。
- 三层容错:重试救快速失败,超时 + 熔断救慢响应,降级保核心链路。
- 闭环:健康探测自动摘除把窗口收敛到秒级;网关令牌桶限流保护后端;可观测把 MTTR 从 45 分钟降到 8 分钟。
- 效果:可用性 99.95%、P95 380ms、Recall@20 0.92、缓存命中率 92%。
⑨ 数据来源
| 数据 | 来源 | 标注 |
|---|---|---|
| 网关吞吐 3852 → 12918 req/s;p99 73 → 4ms;TIME_WAIT 14790 → 178;错误率 0.22% → 0 | demo1 实验 E0(真实压测) | 真实实验 |
| 故障窗口 4~5 秒;窗口内错误率约 50%;单次失败 13439 / 19056 次 502 | demo1 实验 E1(真实压测,两次复跑) | 真实实验 |
| 成功请求 p95 仍为 4ms(快速失败) | demo1 实验 E1(真实压测) | 真实实验 |
| 同机发压:服务与发压同机、20 并发,绝对吞吐低于真实能力,相对对比成立 | demo1 环境说明 | 真实实验 |
| 可用性 99.95%;MTTR 45 → 8 分钟;峰值 800 QPS;P95 380ms;Recall@20 0.92;缓存命中率 92% | 成文取值(无法自证的量) | 固化取值 |
| 健康摘除"窗口收敛到秒级"、令牌桶限流、本地缓存降级 | 机制描述(未做实验的机制不写具体数值) | 机制 |
| 演练台 A / B 中的所有数字 | 按真实机制与常量构造的教学模拟,非实测 | 教学模拟 |
真值记录在 demo1-microservice-governance/docs/experiments.md。论文正文中凡引用具体数字处,均为上表「真实实验」或「固化取值」两行;模拟器数字只用于理解机制,不入论文。