Java分布式服务如何保证接口幂等性

幂等性:就是用户对于【同一操作】发起的【一次请求或者多次请求】的【结果是一致的】,不会因为多次点击而产生了副作用。
举个例子来说,比如买东西付款,要保证同一个订单不论接口出什么bug,最终保证客户只付一次款

1:某些相关数据库表可以设置唯一主键(比如订单号、付款单号等),这样就可以采用insertOrUpdate来保证某个操作只对这一条数据进行操作
2:对于某些字段可以采用状态机来解决,比如1->2->9->10,在往数据库写操作时在where条件中根据状态机增加限制
3:可以在数据库表中手动维护一个version字段,在操作数据的时候增加where条件version<#{version}
4:采用redis分布式锁,根据请求参数生成一个唯一KEY
5:增加全局唯一ID,在所有分布式系统中统一(操作比较麻烦,没有尝试过)

你可能感兴趣的:(Java分布式相关)