與第三方系統打通的N種高階方式

2021-10-10 11:31:18 字數 1659 閱讀 4316

第一級別

使用http協議,來進行互動,對失敗的請求進行記憶體重試3次,3次後丟棄

第二級別

對失敗的資料進行持久化重試,存放於資料庫中,用定時任務來對失敗的資料進行重新處理,重試3次以後丟棄,3次的間隔時間固定

第**別

優化重試策略,考慮到如果重試時間間隔設定得太短,第三方宕機短時間內無法恢復,會跳過3次重試時間隔離。

如果重試次數太多,比如設定10次,1是耗資源(對方服務短時間內能恢復的就已經恢復了,恢復不了的,短時間內重試這麼多次也沒有意義),2是定時任務不能很快的處理到新產生的資料

如果重試時間間隔太長,第三方系統恢復後,又需要很長時間才能接收到。

折中的方案是優化策略為指數級別的重試方式,第1次失敗1分鐘,第2次失敗2分鐘後重試,第3次失敗4分鐘後重試,以此累加

第四級別

重試是由定時任務發起,為了不重複執行,所以執行執行緒只有1個,資料量過大,可能會顯得力不從心

這時候可能考慮多開幾個執行緒並行跑,來加快資料的傳輸

想要多開執行緒,就需要考慮執行緒之間的任務分配,可以通過取模,範圍等方式來做任務分配,來達到加快同步效率的目的

第五級別

執行緒中斷是指,程式業務邏輯出現未知異常導致執行緒中斷,中斷後該執行緒所負責的任務不能得到執行(比如該執行緒負責的1-100條之間的記錄)

執行緒阻塞是指,http網路阻塞(比如 resttemplate的超時時間會導致此問題),或者cpu未分配到執行此任務的片短,cpu在忙著搞其他具有更高優先順序的事情,或者有其他執行緒一直占用著cpu使用權導致該任務執行緒一直掛起

單機瓶頸是指該服務一台機器處理能力有限 或者 由於異常問題導致宕機,假死,等不可控因素時任務得不到執行

考慮到以上問題,可能需求使用到分布式任務系統,當乙個執行緒死掉後,有其他執行緒來完成他的工作,當一台機器死掉後,有其他機器來完成這台機器的工作

第六級別

與第三方同步發生異常時研發團隊得不到通知,發生問題不能得到及時處理,等到使用者發現,或者第三方研發發現,再返饋到我方,就太晚了,所以需要一套完整的業務監控系統,通過先於使用者,先於第三方發現問題,並解決問題

第七級別

公司團隊的業務很多,只要不是孤島,很多業務都需要與第三方對接,每一次的對接成本都做到這種程度,是一件即廢人力,又廢物力,又浪費時間的做法

如果能將這一套流程平台化,抽象為乙個與第三方對接的公共平台,那業務團隊只需要做一件事,那就是將「需要同步的資料存在自己業務的資料庫裡",後面的事情交給專門的系統來做專業的事情

來達到每一次對接都是最高端別的對接,每一次對接的成本都是最低

第八級別

既然做了平台化,那似乎還可以做更多的事情

任務可以實現動態分配,執行緒數,任務數,頻次,重試策略,延遲投放,去重 等,來滿足不停變化的需求與資料

每一條資料的來往,三方的處理結果都清晰的存在平台資料庫中,能夠實現後期排查定位和分析

第三方團隊研發能力或需求理解能力不一,常常程式執行一段時間後,希望我們重新推送,以往是遇到這種情況,可能需求手動刷庫,一是不安全,二是不方便。平台可以通過視覺化操作,對指定資料來重放,實現重新推送

能夠監控到每乙個與第三方的同步情況,同步了多少資料,還剩多少,有多少成功的,有多少失敗的,同步的效能怎麼樣,第三方的處理能力怎麼樣,等等執**況

第九級別 - 待完善

歡迎補充

CocoaPods 終端方式載入第三方庫

方式一 訪達 服務 系統偏好設定 勾選 新建位於資料夾位置的終端標籤 和 新建位於資料夾位置的終端視窗 注 乙個終端視窗可以包含多個終端標籤 選中專案資料夾,滑鼠右鍵選擇 服務 新建位於資料夾位置的終端視窗 方式二 使用 command 空格 或者螢幕右上方的搜尋圖示,出現搜尋框。輸入 termin...

Python安裝第三方包的三種方式

平時安裝第三方包時都是直接pip install package name,但有時會因為各種情況裝不上 下面以jieba為例 方式一 全自動安裝 pip install jieba easy install jieba 如果許可權不夠sudo pip install jieba linux pip ...

獲取三方系統的token並訪問第三方系統

一 對接三方系統 當我們要檢視三方系統的資訊時,一般會先獲取到三方系統的token,然後讓前端拼token帶上url來訪問三方系統的介面,先不考慮到加密的問題。比如檢視oa系統的po號,需要先讓前端掉乙個獲取oa系統的token介面,後端通過使用http的方式來獲取到token後,返回給前端,前端拿...