
帮客户拆分300万行代码单体微服务演进踩坑实录前不久帮一家做供应链SaaS的客户做了个架构重构他们原来的单体应用已经彻底跑不动了。系统里堆了大概300万行代码每次发版都要停机大半天团队互相扯皮提个需求能排期到下个季度。这次我得帮他们把这套老骨头拆成微服务定好边界、搭好网关还得让几十个服务能顺畅地跑在容器里。说实话这活儿看着就是常规操作真上手才发现全是暗礁。边界怎么切别跟老代码死磕一开始项目组内部吵得很凶技术方案A是按传统的业务模块硬切订单归订单库存归库存方案B则是引入领域驱动设计按业务上下文重新画圈。我直接选了B。为啥因为他们的老代码里充斥着大量“上帝类”和跨模块的硬编码调用按模块切只会把屎山搬到微服务里而已。试了一圈发现只有按领域切才能彻底解耦。有意思的是到了2026年这年头光看业务逻辑已经不够了我们还得算经济账。客户明确要求拆分后必须上FinOps监控如果某个模块的API调用成本或者GPU推理成本过高哪怕它跟其他功能耦合再紧也得强制独立拆分出来方便单独扩缩容。当时我觉得按数据库表结构稍微改改路由就行结果发现网关层根本拦不住内部循环调用。最后只能老老实实重写边界契约把共享内存全部清掉。javaComponentpublic class CostAwareRoutingFilter extends AbstractGatewayFilterFactory {Overridepublic GatewayFilter apply(CostAwareConfig config) {return (exchange, chain) - {String costTag exchange.getRequest().getHeaders().getFirst(X-FinOps-Cost);if (costTag ! null isOverBudget(costTag)) {exchange.getResponse().setStatusCode(HttpStatus.TOO_MANY_REQUESTS);return exchange.getResponse().setComplete();}return chain.filter(exchange);};}}网关层配好之后内部服务发现直接交给了Spring Cloud Gateway。我们没用那些花里胡哨的插件就靠原生的断言工厂做路由匹配。部署的时候顺手把基础镜像切到了Spring Boot 3.5内置的FinOps成本追踪标签确实省了不少事每个服务的调用开销直接透传到Prometheus。K8s集群也同步升到了1.34边缘节点的冷启动优化做得很激进微服务一扩缩容Pod的拉起速度肉眼可见地变快了。通信链路重构同步调用早就该扔了拆完服务最头疼的就是它们怎么说话。客户原来全是Feign同步调用一个请求链能串起十几个接口超时直接雪崩。这次我们直接砍掉了所有BFF层传统的前端适配层早就不香了。现在微服务之间主要靠事件总线异步通信主流程用Pulsar做消息中间件核心链路全部解耦。我们还在网关里压测了新版本的Istio 1.22专门针对大模型请求的流量控制策略非常实用。重试策略、超时设置和熔断机制全交给Sidecar处理业务代码干净得像张白纸。说实话刚把REST接口全换成异步消息的时候我心里直打鼓怕数据对不上账。后来加了本地事务表加最终一致性校验才把心放回肚子里。多模态处理能力被拆成了独立的AI边缘服务视觉识别、语音转写和文本生成各跑各的容器向量数据库的查询逻辑也被抽成了单独的RAG服务。AI Agent直接作为调度中枢去调用这些微服务彻底取代了以前那种笨重的HTTP拼装逻辑。yamlpulsar-event-bus.yamlspring:cloud:stream:bindings:inventory-sync-in:destination: inventory-updatescontent-type: application/jsonai-model-routing-out:destination: agent-requestscontent-type: application/octet-streamfunction:definition: handleInventory;routeToAgent配置丢进YAML文件里剩下的就是等待消费者拉取消息。Pulsar的读写分离天然适合这种高吞吐场景我们在测试环境压了8万QPSCPU占用率还没超过60%。联调期的连环雷坑死了但总算趟过去真正上线前夜差点翻车。我们把RAG检索服务和模型推理服务拆开后发现向量数据的更新延迟会导致AI返回的结果严重不一致。当时我觉得加个Redis缓存热点数据就行结果一压测缓存击穿直接把数据库打挂了。排查日志查到凌晨三点终于定位到是分布式事务框架在异步消费端回滚策略写得有问题。我们果断改了补偿机制引入Saga模式处理跨库状态流转同时给AI Agent节点加了熔断降级。eBPF的全链路追踪现在也能精确到单个容器网络包再也不用靠猜日志来定位瓶颈了。现在整个链路跑起来响应时间稳定在200毫秒以内模型状态的同步也通过事件溯源彻底闭环。这半个月熬下来头发掉了一把但看着监控大盘上平稳的曲线总算踏实了。本文基于实际项目经验整理如有技术问题欢迎私信交流。