记一次“接口幂等性”引发的问题

对接口幂等性的理解

接口幂等性即对某接口进行一次或多次请求所产生的结果应该是相同的,若接口不幂等,则可能产生重复数据。例如用户注册接口,使用同一个身份证号请求了5次该接口,应该和请求1次的结果一致。

应用场景

  1. 由于网络的不确定性、服务器宕机、服务可能出现短时间无响应等各种情况,接口调用的重试机制就比较重要,请求接口可能调用很多次。
  2. 用户误操作重复点击或前端页面卡顿导致等导致前端重复提交表单的情况。

引发的问题示例

航显数据接入重复

  1. 航显数据即航班信息显示系统数据,描述了航司、航班号、航班日期、航班始发机场、到达机场、计划起飞时间、预计起飞时间、实际起飞时间、计划到达时间、预计到达时间、实际到达时间、航班状态等。
  2. 由于航显数据的预计起飞时间、预计到达时间、航班状态等信息是动态变化的,而航司、航班号、航班日期又是不变的,因此航显数据会以一定频率接入时会有很多重复的字段内容,例如航司、航班号、航班日期等。当时航显数据接入接口未做幂等性设计,且航显数据表主键是业务编号,导致大量数据重复。

解决思路

  1. 设置组合唯一索引,确保航司+航班号+航班日期的唯一性。
  2. 接口做新增/修改处理,若表中已经有航司+航班号+航班日期相同的数据,则做update操作,否则做insert操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值