请教一个并发的问题....
###问题描述: 服务器B调用服务器A的接口,接口返回token和ttl剩余时间.服务器B拿到token和tll后,按照 [ttl-2]秒的方式进行缓存. 问题就出在这里,他是按照ttl减少2秒的方式缓存,那么在这个2秒期间内,他的每一次请求都要访问服务器接口.有没有什么策略,能尽量减少这样情况发生?无论是在服务器B上做策略还是在服务器A上做策略都可以...
9 回复
@myy 额,就是服务器B为了取token的时候保证不失效.他把token的生命周期减少了2秒,本来token生命周期100秒,他就缓存98秒,那么98秒到100秒直接的请求,全部都去服务器A拿token...好像2楼说的对,缓存击穿了
@zy445566 服务器B为了取token的时候保证不失效.他把token的生命周期减少了2秒,本来token生命周期100秒,他就缓存98秒...服务器B的缓存是失效了,压力都给服务器A了
大致明白了,你设置一个全局变量和监听事件,发现token过期后,只要B发生请求前把这个全局变量设置成1,那么B发生第二个请求的时候,发现这个全局变量是1的时候,就不要去请求了,而改成监听事件。 当B第一个请求回来,触发监听事件发送同时再把全局变量设置为0,这样B的其它请求其实就是等B的第一个请求完成的数据了。