1. 程式人生 > >系統兼容性升級,同步轉異步兼容升級思維轉變

系統兼容性升級,同步轉異步兼容升級思維轉變

tro 狀態 開發 異步 沒有 頁面 寫到 第一個 round

本文中心:

同一個流程升級功能

一種是在原來接口上修改.影響所有接口.

如果發現對老功能存在不兼容的問題,那麽記住要轉換思維,要寫到新的接口上.

例子:

結束計費按鈕.

服務端需要做.

  1. 獲取訂單信息

2. 結束賬單. 同時返回賬單信息.(冪等接口,賬單已結束就直接返回,即時第二次調用時位置信息是新的,也直接返回, 對信息不校驗)

3. 然後向收銀臺收單

4. 結束訂單,修改訂單狀態.

問題:

1. 接口太重了.影響成功率.

2. 開發周期短,一期先上同步.二期怎麽改回異步.

擔心:

1. 乘客端調用 finishOrder

2. 進入支付頁面.

第一個想法:

1. 將接口異步化,然後前端使用異步化. [ 對乘客無感知,還是轉菊花]

2. 菊花背後是 狀態輪訓+tcp 通知. 局部接口的狀態查詢可以快速點. 比如支付成功之後回調的查詢.

3. 服務端接收到請求,除了位置判斷外直接返回. 其他復雜操作異步化執行.

問題: 一旦這個功能改造後,老版本就會出現問題.

1. 如果異步化沒有執行成功或者前端先進入下一個流程嘗試支付. 都會被收銀臺拒絕, 無此 outTradeId.

所以想著想著必須一期就上一個輪訓接口,否則升級二期成異步之後,老版本就會有問題.

正確解決方案:

1. 既然老版本會影響.那麽就應該新開一個接口. 老接口的行為方式不變,還是同步. 新接口采用新的方案,采用異步的方式.這樣就不會不兼容了. 原接口上功能升級不能不兼容,那麽就不要想著在原接口上兼容升級. 不要太軸,總能想到解決方案. 不要太關註細節.

系統兼容性升級,同步轉異步兼容升級思維轉變