并发专栏:重复请求如何处理

 

    同一请求在短时间内进行多次相同请求,出现这种情况有很多,如用户多次点击发送请求、模拟请求、服务端处理慢时客户端的重请求。

这类请求的特点:

    1.多次请求的时间间隔非常短,一般在几十毫秒之内(正常请求在几十毫秒内处理完成)

    2.请求信息相同,造成业务方重复处理。

   

解决办法:

    前端:做防重处理

    后端:

            1.数据库锁,对涉及的业务使用数据库层面的锁,如悲观锁或乐观锁,缺点:对请求重复处理

            2.分布式锁,根据限制条件处理请求,优点:简单,处理高效,缺点:占用缓存资源

            3.请求token机制,进入请求页面时分配业务token,当请求时携带业务token,服务端进行判断该请求是否重复,如重复则按失败处理,优点:简单,处理高效,缺点:占用缓存资源

            3.业务幂等,可以接收重复请求,返回一致的处理结果,缺点:对请求重复处理

            4.异步操作,将写操作做异步处理,如全部写入消息队列中,将并行处理变为串行处理。

                  优点: 极大的提高系统吞吐量,因为只有一个写入消息队列的操作,将处理的操作变为串行,保证了写入的顺序性

                  缺点:1.引入了其他复杂度,需要考虑MQ的高可用 2.将并行操作变为串行,仍然会占用计算资源 3.将请求结果改变,客户端无法立即获取请求结果,需要重新请求获取结果。

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值