如何保证接口幂等性

幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次,或者执行多次后结果是一样的。

为什么会产生接口幂等性问题?

1 用户重试

2 页面重复刷新,多次提交表单

3定时任务重复执行

4 消息重试

5 使用了失效或超时重试机制(Nginx重试、RPC重试或业务层重试等)

6 网络原因等

如何保证接口幂等性?

解决办法分为两个方向,一个方向是客户端防止重复调用,一个是服务端进行校验。

1按钮只可操作一次

2 token机制

3 利用数据库唯一索引机制,当数据重复时,插入数据库会抛出异常,保证不会出现脏数据

4 乐观锁机制,如果更新已有数据,可以进行加锁更新,也可以设计表结构时使用乐观锁,通过version来做乐观锁,这样既能保证执行效率,又能保证幂等

5 分布式锁

6 使用状态机

7建防重表

8 使用全局唯一号

posted @ 2023-01-04 16:23  蜡笔没了芯  阅读(28)  评论(0编辑  收藏  举报