寫在前面
最近線上的對賬程式一直不穩定,經常出現對賬時間超長,影響結算跑批任務,導致後續業務受影響。
原來的流程
系統訂單量不大的情況下可以這樣子處理沒有什麼異常問題,隨著系統訂單的增長,對賬時間不斷增長,遠遠超過我們能忍的極限,比如說:到早上還沒有對帳完,影響第二天出結算單的時間,不能做到財務T+1結算。極大的阻礙了業務的正常發展。
優化後的流程
優化思路大概分為以下幾步:
- 將系統之前的序列對賬改成並行對賬
- 查詢訂單資料改成分佈查詢,不能一次載入幾百萬資料
- 對賬結果分多執行緒批量寫入
需要注意的地方:
- 執行緒之間通訊的問題,可以採用共享變數方式將對賬結果存入ConcurrentHashMap
- 執行緒數的大小需要控制好,不能超出機器本身的負載能力,
- 每次對完賬之後記得清除集合資料,防止記憶體溢位