作者:swaimprichett_556 | 来源:互联网 | 2023-10-11 14:30
幂等性是啥? 发一次接口调用与发多次相同的接口消息都能得到与预期相符的结果
假如有个接口是提供加工资的接口,如果调用一次加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