記一次架構設計的經驗--數據質量監控

在工作中跟同事溝通很重要,有多重要呢,一個月前,領導給分派了一個工作:要做一套針對線上實時數據的質量監控。監控這種工作首先第一點也是最重要的一點要跟生產流程解耦,這個性質也間接的導致了這份工作優先級別無限下降,最後只有我一個人搞這個項目。

不知道有多少人有過一個人開發整個項目的過程,從零到一,從無到有,時間比較急,來不及用一些比較成熟但是複雜的開源框架,這種情況下只能針對需求敲代碼開發。之前沒有搞過監控類的項目,只能從網上找案例,找相關的文章,看看前輩們是怎麼思考的怎麼開發的。

當時瀏覽了一整個晚上網站,總結出要實現這個功能至少需要三步:1.數據收集;2.規則引擎;3.數據展示及報警

從功能上講整個系統分爲三類之後,就要開始設計你的表結構和文檔了,這個過程就是我之前寫的一篇架構那些事中的抽象過程了。抽象這個事情很有意思,我們不妨先一步一步把各方以及需求都寫到一張紙上,發現他們的相同點與不同點。

圖1 數據的具體層級

上圖是我根據數據性質以及業務方需求把每一個變量作爲一個單元,由數據來源將每一個變量級的數據傳過來,然後由我方存儲。所以三張表油然而出,數據來源表,數據集表,變量表,具體每一個變量是我們應該對監控的對象,所以接下來的規則引擎類的表就要針對每一個變量做文章了。

常見的數據質量規則是數據偏移,數據偏移就是我們常見的psi公式了,將一個變量分多份,當然分的種類也不同,一般常見的有等寬和等頻。然後根據公式:

psi = sum((實際佔比-預期佔比)* ln(實際佔比/預期佔比))開始計算psi值。計算psi值一般小於0.1屬於非常穩定,在0.1與0.25之間屬於正常,再大了就需要報警了,同時也可以把每一個分區的預期比例和當前佔比做一個比較,可以很好的顯示出數據偏移方向,針對情況可以做出針對性的策略,舉個簡單的現實中的例子:如果一些註冊用戶的性別年齡區間相較於預期的比較大,這種情況下必須趕緊分析一下當前的推廣活動啊等等的。

到現在爲止設計工作數據收集模塊和規則引擎模塊已經有一個大體的印象了。提前劇透我們的數據量非常大,一天的數據有接近一個T的大小,後期我會接着寫第二篇,講一下具體用到的技術框架和數據展示報警模塊以及數據存儲的設計。

趁着晚上下班的時間,寫的這篇文章,如果還算可以記的點個贊哦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章