核心结论:在万级 QPS 且对秒级延迟敏感的电商场景下,优先采用“本地事务 + 可靠消息最终一致性”的轻量架构,通过异步重试机制在可接受的短时窗口内达成跨服务数据收敛。
1. 采用“本地事务+可靠消息”模式:下单主流程在本地事务中创建订单并写入状态为“初始化”的消息表;提交成功后发布 MQ 消息触发库存扣减。库存服务消费消息后独立执行本地事务,更新库存与流水表。
2. 引入幂等性设计:库存服务通过全局唯一键(如订单 ID)建立去重表或乐观锁版本号,确保网络抖动导致的重复消费不会造成重复扣减,从根源上降低补偿逻辑的复杂度。
3. 建立轻量补偿链路:设置定时任务扫描超过指定时长(如 30 秒)未确认的订单,并主动对库存服务发起查询比对;若不一致则触发补偿逻辑(回滚或重试),将一致性收敛时间压缩至秒级以内,而非依赖重型框架的强一致拦截。
4. 监控与告警体系:重点监控消息积压量、补偿任务触发频次及平均延迟。若监控发现延迟或积压持续超限,再针对性地升级至 TCC 或引入分布式锁机制。 注意事项:此方案牺牲了极端情况下的强一致性,务必确保业务逻辑能容忍短时的数据“不一致窗口”,并在上线前通过混沌工程演练补偿任务的有效性。