design for failure

yongliu發表於2024-08-08

問題:支付系統繳費成功更新狀態慢,
表象 未收到微信支付回撥,沒有找到日誌
解決辦法 增加多次主動查單,仍有延時,因為查詢單次過多也怕微信封ip,所以查單的時候採用的多次漸進式查單+定時查單
根本原因是 回撥部分 關於商戶號的儲存出現了問題,日誌也沒記錄詳盡導致

A程式 有一個記憶體變數C 在啟動的時候需要從B程式讀取資料,並寫入到A程式
變數C研發環境沒有問題,
生產環境有問題
原因是A 和B程式幾乎是同時重啟,由於A啟動的時候B 正好處於不可用狀態,導致變數C出了問題
變數C沒有做反覆檢查,

調整辦法
A程式啟動的時候 啟動一個檢查執行緒,每分鐘去檢查變數C是否正確,不正確的情況下去找B程式重新獲取,

總結
設計的時候要多考慮失敗的情況,儘可能讓程式正確,考慮所依賴的程式可能會故障,如果故障 ,能否自行恢復,恢復時間等

相關文章