接口幂等性设计

什么是幂等性?

  • 在数学中:
    某一元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同。例如,高斯符号便是幂等的,即f(f(x)) = f(x)。
  • http:
    HTTP的幂等性指的是一次和多次请求某一个资源应该具有相同的副作用。

HTTP中支持幂等的接口:

在HTTP规范中定义GET、PUT和DELETE方法应该具有幂等性。

  • GET:GET方法是向服务器查询,不会对系统产生副作用,具有幂等性(不代表每次请求都是相同的结果)。
  • PUT:PUT方法首先判断系统中是否有相关的记录,如果有记录则更新该记录,如果没有则新增记录。
  • DELETE:删除服务器上的相关记录。

分布式系统下接口的幂等性

请求重复的原因:
一般是由于重复点击、网络重发、nginx重发等导致数据重复提交。

分布式锁:

在执行某段流程之前,根据某个标志(如:id等)获取分布式锁,保证了同一时间该流程只有一个能被执行。

token机制:

  • 客户端在请求接口之前先向服务端申请token,token存放到redis中(单次有效),并设置有效时间。
  • 客户端带着token去请求接口,后端对token进行校验。
  • 服务端对token需要使用 delete 操作进行校验,使用 select + delete 会存在并发问题。

唯一索引:

在数据库层面,对相应字段加唯一索引,防止数据重复插入。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值