美文网首页
接口幂等性设计

接口幂等性设计

作者: dylan丶QAQ | 来源:发表于2020-12-07 21:11 被阅读0次

简书日更 第1篇: 接口幂等性设计 相关知识


1. 接口幂等性涉及的相关问题

经常遇到数据重复的问题

  • 表单录入如何防止重复提交

  • 微服务架构中,客户端重试如何防止重复提交

幂等性:f(f(x)) = f(x)

幂等元素运行多次,还等于它原来运算的结果

什么情况下需要幂等性

重复提交、接口重试、前端业务操作抖动

并不是所有的业务都需要幂等性,要根据实际业务确定是否需要幂等性

2. 保证幂等性的策略分析

保证幂等性的核心思想:通过一个唯一序号保证幂等(如果一个业务操作我们赋予它一个唯一业务id,如果这个业务操作内容一样,那么这个业务id就不变,这个时候有多个一模一样的业务id到后台,就可以进行判断了)

非并发情况下只需要查询这个业务单号是否有操作过,如果没有执行即可

并发情况整个过程用加锁来实现

3. 业务操作的幂等性分析

  • Select:查询操作不需要考虑幂等,对数据不会产生任何影响,天然幂等

  • Delete:删除操作,第一次修改成功后就不会有任何返回,后续啊不再执行了,也就不用考虑幂等了,但有一个问题,删除操作无论使用什么条件最后都转换到唯一id进行删除

  • Update:这个就需要考虑幂等

    • 如果更新你的工资,20k,30k,update table set salary=30 where id=1001,这就不需要幂等

    • 如果是自增方式:update table set salary+10 where id=1001,需要设计幂等

  • Insert:由于是新增操作没有唯一单号,就需要通过token的形式使用幂等

  • 混合操作:如果这一组业务有一个唯一单号,就可以使用这个单号进行锁操作,如果没有就需要增肌token进行幂等设计

4. 幂等性的具体设计分析

  • 修改操作的幂等设计

    • 修改数据前一定是先查询并获得数据了

    • 获得的数据里要加上版本号version、update_time

    • 修改的时候使用这个version作为条件,如果条件不符更新肯定不成功

    • 更新同时变更version

    • 实际上就是使用了乐观锁和update行锁实现幂等

  • insert操作的幂等性设计

    • 根据唯一单号进行设计:比如限购,一个用于只能购买一个(uid+pid)给这个组合设置唯一索引

    • 没有唯一单号:用户提交数据或form表单事重复提交导致的数据重复录入

      • 通过token机制来解决

      • 在用户打开表单的同时生成一个唯一序列的token,提交数据时将token传递给后台

      • 对这个token进行加锁控制,未获得锁的操作全部结束业务

      • 为了保证其他重复提交不获得锁,可以不手动释放锁,待其自动超时释放

  • 混合操作方式

    • 一整套混合业务操作可以统一使用token机制来加锁进行重复提交限制

相关文章

  • 接口的幂等性的N种考虑

    分布式服务接口的幂等性如何设计 什么是幂等性 一个分布式系统中的某个接口,要保证幂等性,该如何保证?这个事儿其实是...

  • SpringBoot接口幂等性实现的4种方案!

    目录 什么是幂等性 什么是接口幂等性 为什么需要实现幂等性 引入幂等性后对系统的影响 Restful API 接口...

  • 接口幂等性设计

    简书日更 第1篇: 接口幂等性设计 相关知识 1. 接口幂等性涉及的相关问题 经常遇到数据重复的问题 表单录入如何...

  • 接口设计-幂等性

    根据网络资料整理 幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。...

  • 接口幂等性设计

    一、什么是幂等? 看一下维基百科怎么说的: 幂等性:多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和...

  • 什么是接口的幂等性,如何实现接口幂等性?一文搞定

    每天一个知识点 什么是接口的幂等性,如何实现接口幂等性? (一)幂等性概念 幂等性原本是数学上的概念,用在接口上就...

  • 接口幂等性

    接口幂等性 什么是接口幂等性? 最简单想到的实现接口幂等性(重复提交)的操作是什么? 最简单稍靠谱的解决方案是什么?

  • 接口幂等性书目录

    1.幂等性定义 1.1 数学定义 1.2 HTTP规范的定义 2. 何种接口提供幂等性 2.1 HTTP支持幂等性...

  • 接口幂等性

    什么是接口幂等性? 幂等是数学和计算机学的概念,常见于抽象代数中,即f(f(x)) = f(x)。简单来讲就是接口...

  • 接口幂等性

    学习缘由 幂等性这个词很高大上,但是又不明白其中含义,因此查资料进行理解学习。参考原文:路人甲java 什么是幂等...

网友评论

      本文标题:接口幂等性设计

      本文链接:https://www.haomeiwen.com/subject/axfxgktx.html