什么是接口幂等性?
他描述了一次或者多次请求某一个资源对于资源本身应该具有同样的结果。
为什么要实现接口幂等性?
使用幂等性最大的优势在于使接口保证任何幂等性操作,免去因重试等造成系统产生的未知的问题。
如何实现接口幂等性?
1、数据库唯一主键实现幂等性
数据库唯一主键的实现主要是利用数据库中主键唯一约束的特性,使用分布式 ID 充当主键,保证在分布式环境下 ID 的全局唯一性。
适用操作:插入,删除
2、数据库乐观锁实现幂等性
数据库乐观锁方案一般只能适用于执行更新操作的过程,我们可以提前在对应的数据表中多添加一个字段,充当当前数据的版本标识。如:新增一个visoion字段每次更新进行判断更新
适用操作:更新
3、防重 Token 令牌实现幂等性
调用方在调用接口的时候先向后端请求一个全局 ID(Token)
,请求的时候携带这个全局 ID
一起请求(Token
最好将其放到 Headers
中),后端需要对这个Token
作为 Key
,用户信息作为 Value
到 Redis
中进行键值内容校验,如果 Key
存在且Value
匹配就执行删除命令,然后正常执行后面的业务逻辑。如果不存在对应的 Key
或Value
不匹配就返回重复执行的错误信息,这样来保证幂等操作。
适用操作:插入,更新,删除
原文:https://www.cnblogs.com/DIVEY/p/14892116.html