天天看點

java第三方接口對接_調用多個第三方接口哪一種方案更好?

目的

使用者在下單的時候,會調用我們的背景伺服器,我們的背景伺服器又會根據不同管道調用第三方下單接口,完成整個下單流程,但是第三方下單接口可能突然出問題或者不支援,是以目前我們每一種管道都配置了好幾種備用的下單接口,盡可能提高使用者下單成功率。

問題

想選擇一種更好的方案,來實作同樣的效果。

方案

例如: 下單時type = 1 ,背景支援該類型的第三方下單接口有A,B,C。可能A,B,C會突然出問題,或者不支援,或者不穩定等問題。

每次下單輪詢A,B,C 3個接口,直到成功為止,此時記錄下失敗的管道 ,例如A,當A最近M分鐘的失敗次數大于N次,則下次下單的時候,隻用輪詢B,C接口。當最近X分鐘内失敗的管道A又開始成功了并且成功次數大于X次,則下單的時候又可以輪詢A,B,C,其中A,B,C輪詢次數按照優先級排序。

分析:每次都要輪詢,但可以保證例如 X= 2 A失敗了2次,此時我可以輪詢到B去下單,而不會直接失敗。

每次下單前直接确定一個接口A或者B或者C,根據優先級最高且最近M分鐘内失敗次數沒有超過N次的。

分析:如果N為10次,那麼第11次的時候,才會選擇一個合适的管道,例如B。之是以是N次才剔除掉,是因為避免偶然失敗情況。

有沒更好的方式,解決多管道(就類似上面可用的下單接口用A,B,C)下單的問題,盡可能提高下單的成功率,盡可能嘗試更多的機會,盡可能讓使用者成功支付,盡可能預知第三方接口的問題(接口改變、伺服器挂了、處理慢、業務類型不支援了等問題)

求大神分享經驗。。。

========================================update 2016-7-7============================

需要同步傳回給前端是否成功

第三方暫時沒提供 比如某個業務類型不支援的錯誤碼

其實大家的回答已經比較接近實際場景了~

感謝~