端發(fā)起請求——服務(wù)端校驗——**轉(zhuǎn)發(fā)——支付結(jié)果回傳。她在“校驗”處打了個圈,在“回傳”處畫了問號。
“如果只是參數(shù)不一致,那失敗就發(fā)生在校驗階段,不影響回流。”她說,“但你們說失敗率在擴大,還伴隨回流鏈路占比上升。那意味著錯誤可能在更靠近回傳的節(jié)點?!?br>小高抬眼:“你的意思是結(jié)果回傳的請求也在出問題?”
“不。”林知夏輕輕搖頭,“我想的是:回流鏈路改變后,前端構(gòu)建支付請求時使用了錯誤的上下文數(shù)據(jù)。上下文本應(yīng)來自一次新的會話,但因為跳轉(zhuǎn)回流沒有正確刷新,會話上下文仍是舊的。于是校驗失敗,且由于更多回流發(fā)生,失敗范圍就會擴張。”
她說著把關(guān)鍵字段列出來:session_id、nonce、client_timestamp。她盯住client_timestamp,覺得不對。按理說時間戳應(yīng)該由客戶端生成并參與簽名,除非客戶端在某些情況下復(fù)用了舊的nonce。那會導(dǎo)致一致性校驗失敗,且很難從接口兼容層面解釋。
“我需要看前端埋點?!彼D(zhuǎn)頭,“把這次事故中用戶的關(guān)鍵字段抓出來?!?br>技術(shù)組的人面面相覷??雌饋泶蠹叶荚诘人峁爱a(chǎn)品側(cè)的解釋”,但真正要的是“數(shù)據(jù)證據(jù)”。林知夏從來不喜歡空談。她迅速申請了查詢權(quán)限,拉取了事故時間窗口內(nèi)的樣本數(shù)據(jù)。屏幕上出現(xiàn)一張表格,行數(shù)很少,卻足夠讓人判斷:回流用戶的nonce重復(fù)率遠高于常態(tài)。
“這就是了。”林知夏呼了一口氣,像把胸口的緊繃往外放,“nonce重復(fù)導(dǎo)致校驗失敗。你們上線時有沒有改動nonce生成邏輯,或者有沒有改過埋點上報時機?nonce通常和會話啟動時機掛鉤?!?br>“沒有動這塊?!庇腥嘶卮?,“我們版本更新主要是支付頁面的UI和一個促銷券的邏輯。”
林知夏盯著那條“促銷券邏輯”。UI改動和促銷券邏輯都可能影響到參數(shù)構(gòu)建與會話上下文使用方式。她把可能的因果線收攏到一次促銷券請求的觸發(fā):如果券邏輯在支付前就觸發(fā),并且券觸發(fā)依賴某段緩存或會話狀態(tài),那么可能在回流時產(chǎn)生時機錯位,導(dǎo)致nonce被錯誤復(fù)用。
“促銷券模塊的代碼誰負責(zé)?”她問。
“周祁?!奔夹g(shù)負責(zé)人回答。他說到名字的時候沒有太多情緒,卻讓整個屋子像被輕輕推了一下方向。林知夏記得周祁,他是團隊里最擅長寫“看起來沒問題”的代碼的人。他經(jīng)常用一種溫和的口吻提出建議,但他的建議里總有一層“我已經(jīng)考慮過,你不用擔(dān)心”的氣味。那氣味有時候像是自信,有時候像是在提前把鍋移走。
林知夏沒立刻追問。她只是把數(shù)據(jù)截圖保存,然后對老陳說:“先把線上回滾策略再確認一遍。不要只回滾版本,順便在**層加一個短暫的降級策略:對第三方回流來源的支付請求,強制要求nonce唯一校驗通過,失敗直接提示刷新支付頁?!?br>老陳皺眉:“那用戶體驗會差一點?!?br>“但我們現(xiàn)在體驗差是因為不穩(wěn)定?!?a href="/tag/linzhixia.html" style="color: #1e9fff;">林知夏說,“如果繼續(xù)擴大,會比體驗差更糟糕。至少讓用戶知道自己要做什么?!?br>“行。”老陳點頭,“我去開策略。”
她回到工位,把白板上的鏈路再畫一遍,寫下“回流=上下文錯位”。她在最底下寫了一個新的詞:同謀。
這個詞是她在凌晨兩點半之后開始反復(fù)浮現(xiàn)的。她并不是玄學(xué)愛好者,但她對“異?!钡男嵊X像動物一樣敏銳。她不相信純粹的事故。因為系統(tǒng)的錯誤碼雖然像是隨機,但時間點、觸發(fā)條件、字段特征,卻都像被精心擺放過。
她把“精心擺放”壓回心里。她需要先得到證據(jù)。沒有證據(jù)就不能指控任何人??伤瑯忧宄赫嬲kU的不是錯誤本身,而是有人可能利用錯誤制造混亂,或者掩蓋真實的操作。
群里又有人喊她:“知夏,老板在問情況,他說你負責(zé)產(chǎn)品側(cè)溝通。”
林知夏打開老板的聊天窗口,輸入一段總結(jié):支付失敗率上升,定位到nonce重復(fù)導(dǎo)致一致性校驗失
精彩片段
小說叫做《燈下同謀1》是用戶生秒的小說。內(nèi)容精選:城市的夜像一張反復(fù)覆寫的屏幕,亮處是霓虹與車燈,暗處是無聲吞吐的黑影。林知夏下班時走得很快,風(fēng)從玻璃幕墻間的縫隙鉆出來,像有人在背后輕輕推她一把。她把外套拉鏈拉到下巴下面,仍舊覺得冷。她沒有抬頭看高樓的頂端,因為那上面總掛著“正在維護”的字樣——自從那場事故之后,整座城市的系統(tǒng)仿佛都變得謹慎起來,連廣告牌都像在等某種命令。她的手機在掌心震動了一下。消息來自工作群:研發(fā)部線上緊急故障。林知夏是產(chǎn)品經(jīng)...