百萬資料的對賬優化

AskHarries發表於2018-06-09

寫在前面

最近線上的對賬程式一直不穩定,經常出現對賬時間超長,影響結算跑批任務,導致後續業務受影響。

原來的流程

1528443001(1)

系統訂單量不大的情況下可以這樣子處理沒有什麼異常問題,隨著系統訂單的增長,對賬時間不斷增長,遠遠超過我們能忍的極限,比如說:到早上還沒有對帳完,影響第二天出結算單的時間,不能做到財務T+1結算。極大的阻礙了業務的正常發展。

優化後的流程

優化思路大概分為以下幾步:

  • 將系統之前的序列對賬改成並行對賬
  • 查詢訂單資料改成分佈查詢,不能一次載入幾百萬資料
  • 對賬結果分多執行緒批量寫入

1528445794(1)

需要注意的地方:

  • 執行緒之間通訊的問題,可以採用共享變數方式將對賬結果存入ConcurrentHashMap
  • 執行緒數的大小需要控制好,不能超出機器本身的負載能力,
  • 每次對完賬之後記得清除集合資料,防止記憶體溢位

百萬資料的對賬優化


相關文章