跳转到内容
ZXSTART
返回

项目准备。

编辑页面

1. 支付幂等与数据唯一性

核心案例:三方支付回调/客户端重试导致的重复发货风险。

可以这样讲:

在支付场景中,客户端重试、支付平台回调重投、服务多实例并发都会造成同一笔交易被重复处理。我们按资源粒度设计了两层幂等:创建阶段按用户加分布式锁,验单阶段按订单号加锁;业务层再以订单支付状态作为最终拦截,并结合 Google 的消费/确认状态识别重复请求。对于续订通知,以第三方的 latestOrderId 作为事件标识查重。目标是保证会员发放、金币到账等副作用至多执行一次。

Redis 锁只是并发控制,不是最终数据约束。更稳妥的演进方案是在订单/支付流水表上为第三方交易号或幂等键建立唯一索引,并捕获唯一键冲突后查询并返回已有结果,形成“分布式锁 + 状态机 + 数据库唯一约束”的三道防线。


2. Redisson在项目中应用

运营分配模块用 Redisson 统一 Redis 访问。针对不同问题选不同数据结构:

设计时重点关注原子性、缓存一致性、任务幂等、锁租约和 Redis key 的生命周期


编辑页面
分享这篇文章:

下一篇
JVM