如果是一个用户触发,那么只要将access_token放在数据库,文件,nosql就行,取时判断时间是否过期,过期重新去微信获取再放入。
如果是很多用户,多进程并发,特别是分布式那种架构呢?进程A判断access_token过期了,然后去微信抓取新的;在A尚未成功,进程B也进行了这个动作,
必然导致A的被B的覆盖,依然A的不能使用。
如果是在同一台机器上,文件读写互斥就可保证一个进程访问,数据库的行锁也可以,redis的锁事务也行。
如果是多台机器呢?数据库行锁可以;redis也可以;这时候像node、tornado等框架可以把并发任务串行化,貌似也可以完成;把任务入队列也可以串行化;要是在一台公共的机器上起一个服务定时轮训检测access_token也可以,而且最简单。方法很多!!!
时间: 2024-11-07 15:33:43