token存缓存中,请求竞争陷入死循环解决方案--代码重试机制与nginx重试机制比对

当token存在有效期并存储在缓存中时,过期后的重试可能导致死循环。解决方案包括:1) 设计代码重试机制,限制重试次数和间隔,无效则删除token;2) 利用nginx的重试机制,避免死循环,减轻服务器负担。nginx的proxy_next_upstream配置可控制重试条件和次数。
摘要由CSDN通过智能技术生成

问题:
代码中的token存在有效期,过期后会失效,如果底层用锁去获取,获取的token存在缓存中,那么下一个请求过来可能会拿不到token,陷入死循环,
解决方案:
1.重试机制,限制请求次数和时间,线程每隔1秒钟尝试获取token,尝试5次,此时获取不到就删除token,抛出异常;
2.交给nginx处理;代码抛出异常,交给nginx ,用nginx的重试机制去做(nginx的重试机制是不会死循环的,轻量级);
如果是写到代理里,是重量级的,基层都调用代码中的重试机制,存在不同的用户量和场景时,可能爆出异常,自己写的代码问题也可能测不出来;
理论:重试机制,都交给框架层来做—

nginx的重试机制就是容错的一种。
在nginx的配置文件中,proxy_next_upstream项定义了什么情况下进行重试,官网文档中给出的说明如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值