1. 项目背景与核心挑战
三年前接手这个电商返利APP时,我们还在用传统的Spring Boot单体架构。随着用户量从10万暴涨到300万,每天要处理200万笔订单分润计算,原有架构开始暴露出致命问题:每次大促期间CPU利用率直接飙到95%,修改一个返利规则就需要全站发布,新功能上线周期从1周延长到1个月。
最严重的一次事故发生在去年双11,由于佣金计算模块的一个BUG导致整个支付系统雪崩,直接损失了当天37%的订单。这次事件让我们下定决心进行架构改造,目标很明确:
- 业务模块间零耦合,单个服务故障不影响全局
- 新功能可以独立开发部署
- 系统容量能弹性扩展
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 架构演进路线图
2.1 第一阶段:基础服务拆分
我们首先按照业务边界拆分了六个核心微服务:
- 用户中心(会员等级、身份认证)
- 商品服务(SKU管理、类目树)
- 订单引擎(交易流水、支付通知)
- 分润计算(多级佣金算法)
- 营销中心(优惠券、满减活动)
- 数据分析(用户行为埋点)
技术选型上坚持"稳字当头":
- 注册中心:Nacos(比Eureka更丰富的配置管理)
- RPC框架:Dubbo 3.0(性能是Feign的3倍)
- 配置中心:Apollo(支持灰度发布)
- 网关层:Spring Cloud Gateway(异步非阻塞IO)
关键决策:没有盲目上K8s,先用Docker Compose做服务编排。这个决定后来证明非常明智,让我们有充足时间完善监控体系。
2.2 第二阶段:分布式事务解决方案
分润计算涉及最复杂的分布式事务场景。用户下单后需要:
- 锁定商品库存(商品服务)
- 生成交易订单(订单服务)
- 计算各级佣金(分润服务)
- 发放优惠券(营销服务)
我们对比了三种方案:
- Seata AT模式:侵入性小但性能差(TPC-C测试QPS<800)
- TCC模式:需要手动编写confirm/cancel逻辑
- 本地消息表:最终选择方案,配合RocketMQ事务消息
最终实现的可靠消息系统包含:
java复制// 发送准备消息
TransactionSendResult sendResult = producer.sendMessageInTransactio
