分布式服务接口幂等性的设计

文章讨论了如何在分布式环境中确保服务接口的幂等性。主要方法包括:使用订单ID作为唯一标识,避免重复支付;在处理请求后记录状态,如通过数据库存储支付流水;以及在接收请求时检查是否已处理,利用数据库的唯一键约束或Redis来防止重复操作。
摘要由CSDN通过智能技术生成

分布式服务接口幂等性的设计

单个jvm里面

搞一个map或者set,记录好这个订单的状态被支付过就行。

分布式

保证幂等性:
1、对于每个请求必须有唯一的标识,如订单id,每个订单id最多只能被支付一次。
2、每次请求处理完之后,必须有一个记录标识这个请求被处理过了。比如用db来记录状态,支付之前记录这个订单的支付流水并且支付流水采用订单id做唯一key,只有成功的插入这个支付流水才能执行实际的支付扣款。
3、每次接收请求需要进行判断之前是否处理过的逻辑处理,比如一条订单已经支付了,就已经有了一条支付流水,如果重复发送这个请求,则此时先插入支付流水,因为唯一key的约束,会报错插入不进去,就不会扣款的。

这3点是保证幂等性的主思路,方案不唯一,比如还可以用redis来保存一个是否处理过的标识也可以,服务的不同实例一起去操作redis。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值