在工做中跟同事溝通很重要,有多重要呢,一個月前,領導給分派了一個工做:要作一套針對線上實時數據的質量監控。監控這種工做首先第一點也是最重要的一點要跟生產流程解耦,這個性質也間接的致使了這份工做優先級別無限降低,最後只有我一我的搞這個項目。架構
不知道有多少人有過一我的開發整個項目的過程,從零到一,從無到有,時間比較急,來不及用一些比較成熟可是複雜的開源框架,這種狀況下只能針對需求敲代碼開發。以前沒有搞過監控類的項目,只能從網上找案例,找相關的文章,看看前輩們是怎麼思考的怎麼開發的。框架
當時瀏覽了一整個晚上網站,總結出要實現這個功能至少須要三步:1.數據收集;2.規則引擎;3.數據展現及報警ide
從功能上講整個系統分爲三類以後,就要開始設計你的表結構和文檔了,這個過程就是我以前寫的一篇架構那些事中的抽象過程了。抽象這個事情頗有意思,咱們不妨先一步一步把各方以及需求都寫到一張紙上,發現他們的相同點與不一樣點。網站
圖1 數據的具體層級spa
上圖是我根據數據性質以及業務方需求把每個變量做爲一個單元,由數據來源將每個變量級的數據傳過來,而後由我方存儲。因此三張表油然而出,數據來源表,數據集表,變量表,具體每個變量是咱們應該對監控的對象,因此接下來的規則引擎類的表就要針對每個變量作文章了。設計
常見的數據質量規則是數據偏移,數據偏移就是咱們常見的psi公式了,將一個變量分多份,固然分的種類也不一樣,通常常見的有等寬和等頻。而後根據公式:對象
psi = sum((實際佔比-預期佔比)* ln(實際佔比/預期佔比))開始計算psi值。計算psi值通常小於0.1屬於很是穩定,在0.1與0.25之間屬於正常,再大了就須要報警了,同時也能夠把每個分區的預期比例和當前佔比作一個比較,能夠很好的顯示出數據偏移方向,針對狀況能夠作出針對性的策略,舉個簡單的現實中的例子:若是一些註冊用戶的性別年齡區間相較於預期的比較大,這種狀況下必須趕忙分析一下當前的推廣活動啊等等的。blog
到如今爲止設計工做數據收集模塊和規則引擎模塊已經有一個大致的印象了。提早劇透咱們的數據量很是大,一天的數據有接近一個T的大小,後期我會接着寫第二篇,講一下具體用到的技術框架和數據展現報警模塊以及數據存儲的設計。圖片