叙事主角:老李,AI 时代的互联网架构师 架构探讨:微服务组件体系与中间件体系

不识庐山真面目,只缘身在此山中。
讨论里最常出现的问题是:「你们微服务怎么拆的?」老李更想反问:「拆完之后,谁扛注册发现、配置、限流、事务和消息?」
讲真,很多团队把「拆服务」当成成绩单。服务多了,故障域也多了。HeroDash 早期把 Spring Cloud 铺开:Nacos、Sentinel、Seata、RabbitMQ/NATS、Redis、ES、Milvus,挂上 K8s。迭代周期缩短约 50%。账也硬——每个中间件都是独立故障面。
GFS 末端配送日运单从 10 万冲到 100 万,救场的不是再拆两个服务,而是 RocketMQ 消息中心把日均千万级推送触达率顶到 99.99%,再配 Flink + StarRocks 把链路算清。禅游发行平台用户约 14 亿、峰值约 3 万 QPS:WebFlux 网关异步化加熔断,再配 Dubbo 系 RPC(简历技术栈写 Dubbox,高并发改造按 Dubbo3 能力讲清即可)。前海映像跨境供应链用 Dubbo 拆用户、订单、仓储、物流、财务——边界跟领域走,不跟时髦走。
小结:聊「拆了几个服务」,不如聊「中间件怎么分层、怎么容量、怎么一致」。
工欲善其事,必先利其器。
老李把常谈内容压成两本账。
组件体系(服务怎么活):网关、注册发现、配置中心、熔断限流、分布式事务编排。 中间件体系(服务靠什么活):MQ、缓存、检索、向量库、流计算、OLAP。

微服务不是 Spring Cloud 的别名。Dubbo3 + 网关 + Nacos 同样完整。组件管调用怎么通、怎么控;中间件管数据怎么传、怎么存、怎么查。Nacos 一身两职:实例心跳与配置推送。配置变更要灰度、可回滚,别把生产当实验田。
凡事预则立,不预则废。
老李只认四条拆分扳机:

反例也硬:日运单还在 1 万、团队 3 人,先上 Seata + 五套 MQ,等于给自己挖坑。HeroDash 迭代能砍半,靠组件齐、发布链路短,不是服务拆得碎。反直觉一点:服务越碎,中间件账单越贵。
运用之妙,存乎一心。

别背「谁最强」。看吞吐、延迟、顺序、堆积、运维成本五维,再落到自己项目。

GFS 触达率 99.99%,靠可靠投递、幂等消费、对账,不是每个触达开全局事务。前海映像订单与仓储跨域:写路径本地事务落库,状态靠 MQ 推进;资金类只在短关键路径评估编排/TCC,简历里没写「全链路 Seata 化」。Seata 是手术刀,不是创可贴。
纸上得来终觉浅,绝知此事要躬行。
老李用 Cursor / Claude Code 拉最小栈时,强调别只会背 YAML:
验收就三条:注册可见、熔断可触发、消息可堆积可消费。K8s 再补探针、HPA、资源配额——HeroDash 这条跑通,才敢谈迭代缩短约 50%。
操千曲而后晓声,观千剑而后识器。
三板斧:限流挡入口洪峰;熔断切下游坏牙;降级保主路径。禅游约 3 万 QPS 峰值,先把网关线程模型改成异步,再挂 Sentinel 规则。顺序反了,规则再多也是装饰。
容量账(架构评审常过这本):
GFS 日运单十倍增长,消息中心先扩容再拆服务。拆错顺序,运维先崩。
博观而约取,厚积而薄发。
报「拆了 20 个服务」不如画清:网关 → 治理 → 业务 → 中间件。分层清楚,拆分才有约束。
履约、推送、物流状态机吃得消「可延迟可补偿」。强一致只留给库存扣减、资金记账这类短关键路径。

没有堆积告警、没有熔断演练、没有大 key 治理,谈高可用都是口号。真要过关,得看有没有扛过真实峰值。
知止而后有定,定而后能静。
核心就一条:微服务体系 = 组件治理 + 中间件容量 + 一致性边界。拆服务跟领域与组织走;MQ 跟场景走;事务能本地就本地,能最终就最终;三板斧挂在入口与下游依赖上。

