數據處理程序的一點經驗

      背景:前幾天,同事告訴我DSR(內部一個數據處理應用)又掛了,這次的數據丟失特別嚴重,有25天的數據受到影響。這已經是上線來的第三次出問題了,如果再不認真處理,下次肯定還會有這種問題。

結合同事經常抱怨的事情和我自己的經驗,數據處理程序裏常見的坑點有:
     1.程序升級、遷移等運維需求導致配置錯誤
     2.程序自身的bug
     3.外部依賴項的變更
     4.部分內容缺少相應的測試環境,測試困難


      對於第一點,比較好的方案是使用兩套配置文件:開發和線上,基於maven的profile,可以很方便地做到這點,這樣把配置的工作的將由程序來完成,可以減少人工出錯,也便於開發和維護。同時,在修改完成配置後,需要去檢查配置到底生效沒有
      對於第2個問題,我覺得既然bug無法徹底消除,那就要想辦法降低它的傷害,並提高調試開發的工作效率。首先就是要把原始的數據記錄下來,例如,從消息隊列中讀取的每條消息,都可以存起來,這樣當程序沒有正確保存數據時,還可以在修復完數據之後把這部分數據追加回去。其次是記錄程序中發生的異常,並在關鍵邏輯節點上輸出日誌,這樣調試找問題的時候就會非常簡單。
     第3個問題的話,就需要引入監控,外部依賴項的變更導致的各種異常,如輸出數據的數量、外部接口的調用情況、異常的次數等,通過統計程序的運行情況,可以較快地發現,從而減少這個依賴項變化帶來的破壞。
其他的經驗還包括:
    a.對於數據處理程序應該有至少兩種運行模式:
        1.定時運行的正常模式
        2.補充數據時的批處理模式,最好允許在命令中輸入參數,對於調試會比較方便
        3.測試接口和驗證特定數據的測試模式,可選
    b.過早的優化是魔鬼。先弄清楚需求,搞清楚數據量、接口吞吐量等功能非功能性需求之後,再去考慮性能等問題,過早的優化只會讓自己陷入泥潭
    c.對程序的關鍵/重要依賴項和指標進行監控,出現問題裏及早修復

  以上就是這段時間主要碰到的問題和解決方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章