首页 > 编程知识 正文

高并发接口解决方案,web高并发解决方案

时间:2023-05-06 21:29:16 阅读:52817 作者:2027

Token高并发解决方案1 :要使用Token作为Token使用的第三方客户端模式,请使用单实例模式,或者定义全局变量isRefresh标志,设置同步锁定并使用Token Token方法的刷新只调用一次。

第二,作为token服务器端,后端方案。 使用Redis缓存同时启动多个请求时,第一个接口会更新token,后续请求无需重新更新token即可通过请求。 在中,后端必须将用户首次登录时生成的Token数据(Token和createTime )缓存到Redis中。

Token过期后,重新生成新的Token数据并更新Redis缓存。 同时,在Redis中设置Token迁移数据,并设置30s等较短的过期时间。 如果发现在后面的请求中Token被更新了,就判断Redis中是否存在Token迁移数据,如果存在,就释放,这样同一时间的请求就可以全部通过。

后端使用Redis同时解决多个接口的请求,第一个接口更新Token,后面的请求仍然是手机更新前的旧Token。

后端要解决这一问题,必须添加更新Token的过渡期。 更新Token时,在Redis中同时设定过渡期数据,根据需要设定15S的有效期限。 之后,在认证时判断该Token是否还在过渡期内,如果是,则直接通过。

在更新大致意义的Token后,应该再增加一个更新Token的过渡期,在Redis上同时设置过渡期数据,设置15S的有效期,然后先判断Redis上是否存在这个Token,如果存在就释放,要求同样时间

前端解决方案:如果前端使用axios同时发出多个请求,其他接口将如何重试? 两个接口几乎同时开始并返回。 第一个接口进入更新Token后重试的过程,但第二个接口必须先保存,然后更新Token后重试。 同样,如果同时启动三个请求,则需要缓存后的两个接口。 请在Token更新后重试。 因为接口不同步,所以处理起来有点麻烦。

当收到第二个过期的请求时,Token正在更新。 首先将此请求保存到数组队列中,等待此请求直到Token更新,然后一次重试一个请求队列并清空。

那么,我们如何等待这个要求呢? 为了解决这个问题,我们必须借用Promise。 将请求排队后,同时返回一个Promise,以便此Promise一直处于Pending状态。 也就是说,不调用resolve。 这个时候,这个请求一直在等着呢。 这个请求一直在等待,除非我们执行resolve。 刷新请求的接口返回后,调用resolve,一次重试一次。

文章: token总结与思考——同步访问刷新策略,关于jwt过期与淘汰问题

JT生成token和过期处理计划

Token更新并发处理解决方案

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。