常用的四种接口幂等性方案
AI-摘要
Tianli GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
什么是幂等
在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。
预防重复提交与幂等接口的区别
防重提的API的表现
第一次提交:
张三工资涨500,数据库update操作,接口返回“操作成功”
后续相同请求:
拒收请求:张三工资涨500,接口直接返回“请勿重复提交”
幂等接口的表现
第一次提交:
接收请求:张三工资涨500,数据库update操作,接口返回“操作成功”
后续相同请求:
接收请求:张三工资涨500,数据库不做任何写操作,接口返回“操作成功”
幂等问题是如何产生的
程序重复提交
MQ自带的重试机制
幂等性接口方案
业务属性保障幂等
利用主键生成器或者唯一性约束确保数据唯一
伪代码
String orderId = "AJHS-00387-KA";
Order order = new Order();
order.setOrderId(orderId);
try{
dao.insert(orderId,orderObj)
return "{code:0}";
}catch(SQLException e){
//捕捉唯一性约束
//同样返回成功
return "{code:0}";
}
额外的状态字段与业务逻辑控制
工作流程根据状态判断
工作节点编号 | 上下文数据 | 节点状态 |
---|---|---|
328112 | ... | 已结束 |
328113 | ... | 进行中 |
328114 | 昨天开黑去了 | 已就绪 |
申请预置令牌
令牌服务器
本地消息事件表
特别提示
注意:悲观锁与乐观锁并不能解决幂等问题,只能解决并发冲突问题。很多老手给弄混了
悲观锁锁定资源
基于版本的乐观锁
本文是原创文章,完整转载请注明来自 乐读阁
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果