系統兼容性升級,同步轉異步兼容升級思維轉變
阿新 • • 發佈:2017-12-21
tro 狀態 開發 異步 沒有 頁面 寫到 第一個 round
本文中心:
同一個流程升級功能
一種是在原來接口上修改.影響所有接口.
如果發現對老功能存在不兼容的問題,那麽記住要轉換思維,要寫到新的接口上.
例子:
結束計費按鈕.
服務端需要做.
1. 獲取訂單信息
2. 結束賬單. 同時返回賬單信息.(冪等接口,賬單已結束就直接返回,即時第二次調用時位置信息是新的,也直接返回, 對信息不校驗)
3. 然後向收銀臺收單
4. 結束訂單,修改訂單狀態.
問題:
1. 接口太重了.影響成功率.
2. 開發周期短,一期先上同步.二期怎麽改回異步.
擔心:
1. 乘客端調用 finishOrder
2. 進入支付頁面.
第一個想法:
1. 將接口異步化,然後前端使用異步化. [ 對乘客無感知,還是轉菊花]
2. 菊花背後是 狀態輪訓+tcp 通知. 局部接口的狀態查詢可以快速點. 比如支付成功之後回調的查詢.
3. 服務端接收到請求,除了位置判斷外直接返回. 其他復雜操作異步化執行.
問題: 一旦這個功能改造後,老版本就會出現問題.
1. 如果異步化沒有執行成功或者前端先進入下一個流程嘗試支付. 都會被收銀臺拒絕, 無此 outTradeId.
所以想著想著必須一期就上一個輪訓接口,否則升級二期成異步之後,老版本就會有問題.
正確解決方案:
1. 既然老版本會影響.那麽就應該新開一個接口. 老接口的行為方式不變,還是同步. 新接口采用新的方案,采用異步的方式.這樣就不會不兼容了. 原接口上功能升級不能不兼容,那麽就不要想著在原接口上兼容升級. 不要太軸,總能想到解決方案. 不要太關註細節.
系統兼容性升級,同步轉異步兼容升級思維轉變