从八字五行看微服务架构的五行相生

14 阅读10分钟

背景

做微服务的人,大多信两件事:

  1. 系统一定会变复杂(不管你愿不愿意)。
  2. 复杂之后一定要“有法可依”(不然就是“玄学运维”)。

但今天我想反过来玩一把:用“玄学”去解释“工程学”

我最近做了个有趣的类比:把五行(金木水火土)当成微服务架构里五类“基础能力”,再把相生/相克当成依赖关系与约束机制。

顺便把我自己的命盘也拿来做一次“架构体检”(别慌,不是要把 SRE 变成命理师;只是想用一种更容易记住的方式,把架构的平衡讲清楚)。

问题

微服务架构最大的坑,不是“服务拆不拆”,而是拆完以后五种能力失衡

  • 你可能“水”太旺:数据流、消息流、流量洪峰滚滚而来,但业务处理能力跟不上。
  • 也可能“金”过强:治理规则多到像“十八道关卡”,最后把交付效率抠成了 PPT。
  • 或者“土”松散:平台不承载,团队全靠个人英雄主义,最终变成“人人会写 YAML,没人能睡整觉”。

换句话说:微服务不是一堆小服务,而是一套能长期自洽的五行系统

为了让类比不流于“段子”,先把映射说清楚。

1) 五行 → 微服务组件映射(基础盘)

下面这个表,是全文的“底层协议”。(先立规矩,后面才能开玩笑。)

五行架构组件映射典型技术/实现过强/过弱的“症状”
数据流 / 消息队列 / 事件流(水主流动)Kafka / Pulsar / MQ、CDC、流式计算、日志管道水旺:回压、堆积、延迟扩散;水弱:服务耦合、同步调用雪崩
计算 / 业务逻辑 / 热路径(火主变化与能量)微服务实例、函数计算、热点逻辑、CPU/Runtime 优化火弱:P99 飙升、线程池枯竭;火旺:烧钱、过度扩容
服务增长与扩缩容(木主生长)HPA/KEDA、自动伸缩、服务发现、灰度扩容、容量模型木弱:峰值扛不住;木旺:服务数爆炸、治理跟不上
安全与治理(金主收敛、规则、边界)身份认证、鉴权、准入、限流、熔断、策略中心、审计金弱:乱调用、越权、事故;金旺:流程冗长、发布阻塞
基础设施/平台承载(土主承载、稳定)K8s/容器平台、边缘节点、存储、网络、可观测性底座土弱:基础不稳、频繁故障;土旺:平台过重、创新慢

一句话总结:五行不是五个部门,是五类能力的“力学平衡”。

2) “相生”关系 → 健康架构依赖

五行相生:木生火 → 火生土 → 土生金 → 金生水 → 水生木

把它翻译成架构语言,就是一条“健康依赖链”:

  1. 木生火:扩缩容能力带动计算能力
    • 有效的弹性策略,才能让业务逻辑在峰值时“有火可用”。
    • 反过来,如果没有木(扩缩容、容量模型),火(计算)只能靠“人肉扩容”,那就是“值班人的阳寿在燃烧”。
  2. 火生土:稳定的业务实现反哺平台建设
    • 业务做得越深,越会倒逼出平台能力:镜像、发布、观测、容量、成本。
    • 土不是先天就完美,是被火炼出来的
  3. 土生金:平台成熟后才能沉淀治理与安全
    • 没有统一平台,治理规则就会“到处长野草”。
    • 有了承载与标准化,才能把安全、准入、审计做成“金规铁律”。
  4. 金生水:治理让数据流动更可靠、更可控
    • 消息流/数据流不怕大,怕的是不可信、不边界、不追溯
    • 好的金(治理)会让水(数据)流得快、流得稳、流得有据可查
  5. 水生木:数据与事件驱动服务的增长与演化
    • 观测数据、业务事件、流量画像,决定你要不要扩、怎么扩、扩到哪。
    • 没有水(数据),木(增长)就是瞎长

Mermaid:五行相生 ↔ 微服务循环图

flowchart LR
  W["木:服务增长/扩缩容\n(HPA·KEDA·容量模型)"] --> F["火:计算/业务逻辑\n(实例·热路径·Runtime)"]
  F --> E["土:平台/基础设施\n(K8s·边缘节点·观测底座)"]
  E --> M["金:治理/安全\n(鉴权·限流·策略·审计)"]
  M --> Wa["水:数据流/消息队列\n(Kafka·Pulsar·日志管道)"]
  Wa --> W

  classDef wood fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20;
  classDef fire fill:#ffebee,stroke:#c62828,color:#7f0000;
  classDef earth fill:#fff8e1,stroke:#f9a825,color:#6d4c41;
  classDef metal fill:#fafafa,stroke:#616161,color:#212121;
  classDef water fill:#e3f2fd,stroke:#1565c0,color:#0d47a1;

  class W wood;
  class F fire;
  class E earth;
  class M metal;
  class Wa water;

方案

上面讲“相生”是理想状态。现实中,架构更像命盘:有偏、有旺、有弱

所以方案分三层:

  1. 用五行框架做一次架构“体检”(先识别偏差)。
  2. 用“相生”去补短板(让依赖变健康)。
  3. 用“相克”去治反模式(该约束的要约束)。

1) 相克关系 → 架构反模式/制约(治病用)

五行相克:木克土、土克水、水克火、火克金、金克木

在架构里,它既是“反模式警报”,也是“必要的制约”。关键在于:克得对不对、克得过不过

相克架构解释(健康的克)反模式(失控的克)处理建议
木克土快速迭代推动平台升级业务随意提需求把平台拖成“万金油”平台边界清晰:能力产品化,拒绝一次性定制
土克水平台能力约束数据流(配额、隔离、SLO)平台落后导致数据堆积、回压扩散资源隔离 + 队列治理:限额、优先级、隔离池
水克火数据洪峰逼出计算弹性水太旺把火淹灭:MQ 堆积 → 业务超时 → 级联背压/削峰:限流、批处理、异步化、缓存
火克金业务效率推动治理轻量化“先上线再说”把安全和合规烧穿最小可行治理:自动化准入、策略下沉、审计闭环
金克木治理约束服务数量与边界治理过度:发布门禁把扩容/迭代卡死分层治理:核心链路严,边缘链路松;按风险分级

关键结论:相克不是坏事,失控的相克才是坏事。

2) 老赵命盘 → 架构诊断(把比喻落到实处)

把命盘数字翻译成架构症状:

  • 水 34%(偏旺)
    • 对应架构里常见的“水旺系统”:
      • 流量大、链路长、消息多、数据管道复杂
      • 典型场景:HTTPDNS/边缘调度这种业务,天然就是“水系工程”——请求像水一样来,解析结果像水一样流。
  • 火 11%(偏弱)
    • 对应“火弱系统”:
      • 计算/业务处理能力不足
      • 表现为:P99 长尾、CPU 抖动、线程池耗尽、下游超时扩散。
  • 土 29%(不算弱,偏厚)
    • 说明平台/承载还可以,但如果土太厚又容易“拖慢创新”。
  • 木 12%(偏少)
    • 说明“生长性”不够:
      • 扩缩容、容量模型、自动化弹性需要补。
  • 金 11%(中性偏少)
    • 治理需要有,但不能把“火”先灭了。

这就很像一个真实的线上问题:

  1. 水系能力很强(数据流、日志流、消息流都很顺),但
  2. 火不够(消费端算力不足),于是
  3. MQ 堆积 → 延迟抬升 → 线程池被超时占满 → 链路级联。

如果把它写成“命理断语”,大概就是:

  • 水旺火弱,遇峰则滞;喜木火来扶,方得通达。

但我们是工程师,所以要给“可落地的补救方案”。

3) 补木、扶火:一套可执行的工程解法

A. 先“扶火”:把计算热路径做强(火主变化)

目标:让业务在峰值时“烧得起来”,而不是“刚点火就缺氧”。

  1. 扩容前置:把峰值变成可预测
    • 容量模型:QPS → CPU/Memory → 实例数的映射要固化成公式/配置
    • 压测基线:至少有一次“可复现”的峰值压测报告
  2. 火力集中:优化热路径(少做无用功)
    • 缓存前移:把“重复计算”变成“缓存命中”
    • 减少跨服务同步调用:能异步就异步(别让每个请求都像过五关斩六将)
    • 线程池/连接池治理:超时、队列长度、隔离池要可观测
  3. 熔断降级:火要有“护城河”
    • 降级策略要明确:可用性优先还是一致性优先
    • 错误码要“可诊断”:别让 500 成为你的八字“通杀格”

B. 再“补木”:让系统具备生长性(木主生长)

目标:让扩缩容像树长枝条一样自然,而不是像“临时抱佛脚”。

  1. 事件驱动弹性(木生火的关键)
    • MQ lag、队列深度、P99、CPU、带宽等指标,作为 HPA/KEDA 的触发条件
  2. 边缘+中心的弹性协同
    • 对 HTTPDNS/边缘调度场景:
      • 边缘缓存吸收波动(让火不要每次都被水冲击)
      • 中心集群做稳定计算与策略收敛
  3. 发布体系支持“长出来”
    • 灰度、回滚、金丝雀发布要标准化
    • 扩容也是一次发布:需要同等的可观测与回滚能力

C. 同时“调金、固土”:别让补救变成副作用

  • **金(治理)**要做到:

    1. 策略自动化(别靠人审人批)
    2. 风险分级(核心链路强治理,边缘链路轻治理)
    3. 闭环审计(出了事能追溯、能复盘、能改规则)
  • **土(平台)**要做到:

    1. 承载清晰:哪些能力平台提供,哪些能力业务自担
    2. SLO 透明:土要稳,不是“看起来很稳”
    3. 成本可算:不然火一旺,财务就来克火(这是真·相克)

4) 横向对比:三种“调理方案”怎么选?

下面给一个团队周会可直接拿来讨论的对比表(建议你直接复制到评审材料里)。

方案核心动作优点风险/代价适用场景
扶火优先(先把火点旺)热路径优化 + 增强隔离 + 快速扩容见效快,P99/成功率改善明显可能“烧钱”,若木弱会反复人肉扩容近期峰值压力大、事故频发
补木优先(先让木能长)容量模型 + 自动伸缩 + 发布体系完善长期收益大,团队心智更稳初期投入较大,治理/观测要跟上服务增长快、迭代频繁
土金先行(先打地基立规矩)平台标准化 + 治理体系 + 安全准入风险可控,合规友好可能压慢交付节奏,容易“金旺克木”多团队协作、租户多、合规要求高

推荐策略(更像工程,也更像命理):先救急(扶火),再固本(补木),最后做制度化(固土调金)。

收益

把“五行”这套比喻用在架构讨论里,实际收益很务实:

  1. 统一语言
    • 你说“我们现在水太旺火太弱”,团队就能立刻联想到:数据流压力 > 计算能力
  2. 快速定位矛盾
    • 一场事故复盘,往往不是“某个服务挂了”,而是某一行失衡导致连锁反应。
  3. 让治理不再像宗教
    • 治理(金)不是越多越好;金旺会克木,反而伤害扩容与迭代。
  4. 让平台建设更像投资
    • 土(平台)不是“做着玩”,它决定了后续金(水/木/火)的上限。

最后用一句“玄学收尾,但工程落地”:

  • 命理讲 平衡,架构也讲 平衡
  • 命盘里我喜 木火,但系统里真正的“喜用神”只有一个:
    • 好工程(Good Engineering) —— 可观测、可回滚、可扩展、可演进。

愿我们都能:水来不慌,火旺不燥,土稳不重,金严不僵,木长不乱。