2018年04月6日网站服务器迁移完成……

闲聊说下接口幂等的那些事儿

技术流 苏 demo 314℃

在互联网项目开发中,尤其是有第三方对接,需要进行接口对接的,往往都会接触到一次词,叫幂等。

那么幂等到底是怎么一回事呢?

其实幂等是为了保证唯一性,保证同一个请求只被处理一次

处理幂等的技术有多种,示例一种最简单最常见的,通过幂等数据表来做的方式。

示例表结构:

基于幂等表的方式,我们需要在数据库专门建立一个幂等表(示例),表结构可以如下:id,module,code

  • 其中module标识业务模块
  • code标识幂等key,
  • 另外我们需要在moudle和code两列建立唯一索引

方法一:

插入幂等记录:module=业务模块,code为业务幂等key,执行业务流程,如果执行成功,则结束。如果失败,则删除步骤一插入的记录。

方法二:

开启事务,插入幂等记录:module=业务模块,code为业务幂等key,执行业务流程,提交/回滚事务。(性能缺陷:有事务开销)

补充:如果需要做幂等的请求比较多,可以在事务前先select查一次。

一个比较完整的流程为:

  • 根据module=业务模块,code为业务幂等key查询是否存在记录,存在则直接返回,否则继续下面流程。
  • 开启事务
  • 插入幂等记录:module=业务模块,code为业务幂等key
  • 执行业务流程
  • 提交/回滚事务

当然不根据module和key,直接使用uniquecode或分布式唯一ID来做区分也是很好的选择。

其他方式,更新中…

打赏

转载请注明:苏demo的别样人生 » 闲聊说下接口幂等的那些事儿

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)