数据处理程序的一点经验
? ? ? 背景:前幾天,同事告訴我DSR(內(nèi)部一個數(shù)據(jù)處理應用)又掛了,這次的數(shù)據(jù)丟失特別嚴重,有25天的數(shù)據(jù)受到影響。這已經(jīng)是上線來的第三次出問題了,如果再不認真處理,下次肯定還會有這種問題。
結合同事經(jīng)常抱怨的事情和我自己的經(jīng)驗,數(shù)據(jù)處理程序里常見的坑點有:
? ? ?1.程序升級、遷移等運維需求導致配置錯誤
? ? ?2.程序自身的bug
? ? ?3.外部依賴項的變更
? ? ?4.部分內(nèi)容缺少相應的測試環(huán)境,測試困難
? ? ? 對于第一點,比較好的方案是使用兩套配置文件:開發(fā)和線上,基于maven的profile,可以很方便地做到這點,這樣把配置的工作的將由程序來完成,可以減少人工出錯,也便于開發(fā)和維護。同時,在修改完成配置后,需要去檢查配置到底生效沒有
? ? ? 對于第2個問題,我覺得既然bug無法徹底消除,那就要想辦法降低它的傷害,并提高調(diào)試開發(fā)的工作效率。首先就是要把原始的數(shù)據(jù)記錄下來,例如,從消息隊列中讀取的每條消息,都可以存起來,這樣當程序沒有正確保存數(shù)據(jù)時,還可以在修復完數(shù)據(jù)之后把這部分數(shù)據(jù)追加回去。其次是記錄程序中發(fā)生的異常,并在關鍵邏輯節(jié)點上輸出日志,這樣調(diào)試找問題的時候就會非常簡單。
? ? ?第3個問題的話,就需要引入監(jiān)控,外部依賴項的變更導致的各種異常,如輸出數(shù)據(jù)的數(shù)量、外部接口的調(diào)用情況、異常的次數(shù)等,通過統(tǒng)計程序的運行情況,可以較快地發(fā)現(xiàn),從而減少這個依賴項變化帶來的破壞。
其他的經(jīng)驗還包括:
? ? a.對于數(shù)據(jù)處理程序應該有至少兩種運行模式:
? ? ? ? 1.定時運行的正常模式
? ? ? ? 2.補充數(shù)據(jù)時的批處理模式,最好允許在命令中輸入?yún)?shù),對于調(diào)試會比較方便
? ? ? ??3.測試接口和驗證特定數(shù)據(jù)的測試模式,可選
? ? b.過早的優(yōu)化是魔鬼。先弄清楚需求,搞清楚數(shù)據(jù)量、接口吞吐量等功能非功能性需求之后,再去考慮性能等問題,過早的優(yōu)化只會讓自己陷入泥潭
? ??c.對程序的關鍵/重要依賴項和指標進行監(jiān)控,出現(xiàn)問題里及早修復
以上就是這段時間主要碰到的問題和解決方式
轉載于:https://www.cnblogs.com/showstone/p/4433340.html
總結
以上是生活随笔為你收集整理的数据处理程序的一点经验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: {面试题49} 把字符串转换成整数
- 下一篇: TCP的ACK确认系列 — 快速确认