在互联网项目开发中,尤其是有第三方对接,需要进行接口对接的,往往都会接触到一次词,叫幂等。
那么幂等到底是怎么一回事呢?
其实幂等是为了保证唯一性,保证同一个请求只被处理一次。
处理幂等的技术有多种,示例一种最简单最常见的,通过幂等数据表来做的方式。
示例表结构:
基于幂等表的方式,我们需要在数据库专门建立一个幂等表(示例),表结构可以如下: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的别样人生 » 闲聊说下接口幂等的那些事儿