1 状态机幂等
针对更新操作,比如业务上需要修改订单状态,订单有 待支付、支付中、支付成功、支付失败、订单超时关闭等,在设计的时候最好支持状态的单向改变(不可逆),这样在更新的时候where条件里可以加上 status = 我期望的原来的status,多次调用的话实际也只会执行一次
2 数据库乐观锁
3 token机制防止重复提交

4 全局唯一ID
接口幂等问题中有一种是使用全局唯一ID,就是根据业务的操作和内容生成一个全局ID,在执行操作前先根据这个全局唯一ID是否存在,来判断这个操作是否已经执行。如果不存在则把全局ID,存储到存储系统中,比如数据库、redis等。如果存在则表示该方法已经执行。
网友评论