如果是一個用戶觸發,那么只要將access_token放在數據庫,文件,nosql就行,取時判斷時間是否過期,過期重新去微信獲取再放入。
如果是很多用戶,多進程並發,特別是分布式那種架構呢?進程A判斷access_token過期了,然后去微信抓取新的;在A尚未成功,進程B也進行了這個動作,
必然導致A的被B的覆蓋,依然A的不能使用。
如果是在同一台機器上,文件讀寫互斥就可保證一個進程訪問,數據庫的行鎖也可以,redis的鎖事務也行。
如果是多台機器呢?數據庫行鎖可以;redis也可以;這時候像node、tornado等框架可以把並發任務串行化,貌似也可以完成;把任務入隊列也可以串行化;要是在一台公共的機器上起一個服務定時輪訓檢測access_token也可以,而且最簡單。方法很多!!!