热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

幂等性的处理

幂等性是啥?发一次接口调用与发多次相同的接口消息都能得到与预期相符的结果假如有个接口是提供加工资的接口,如果调用一次加500块钱,如果不

幂等性是啥? 发一次接口调用与发多次相同的接口消息都能得到与预期相符的结果

假如有个接口是提供加工资的接口,如果调用一次加500块钱,如果不控制幂等性的问题,

一直调用接口,那么该员工的工资一直在加

//查询1号员工数据

Employee employee = employeeService.selectById(1);

//更新工资

employee.setSalary(employee.getSalary() + incrSalary);

//执行更新语句

employeeService.update(employee)

有什么问题? 对喽,每重发一次请求1号工资就会+500,幂等性就被破坏了

怎么解决? 传统办法是代码增加前置判断,也就是通过增加一个标志位和加薪时间

if(!员工已调薪 && 加薪时间&#43;6个月<系统当前时间)

{

进行调薪

}

有什么不好&#xff1f; 需要前置判断的地方太多了&#xff0c;一不留神就漏了 这种技术问题不应该成为干扰程序员写业务代码的因素

我们需要一种无侵入的幂等解决方案 构建幂等表是我们的通用解决方案 让兄弟们专心的写CRUD就好啦

 

 优点&#xff1a;后台服务无代码侵入&#xff0c;无需修改业务逻辑

缺点&#xff1a;前台应用要针对幂等进行改造 架构复杂度增加&#xff0c;需要额外部署Nginx、Redis


推荐阅读
author-avatar
swaimprichett_556
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有