文章出處

年末了,公司在統計自己支付系統的訂單成功率,最后發現有很多訂單成功率問題是和用戶頁面操作相關,但是我們目前有些頁面沒有打點做用戶行為數據的采集,因此很難分析出用戶到底是是什么原因沒有完成訂單,對此我寫了一個前端監控方案,下班時候和領導開會討論這個方案,很晚才回家哦,會上還是被批了一番,認為這個和用戶行為分析系統耦合,而且最關鍵的采集那些信息,怎么分析信息沒有細化,公司有相似的技術方案,我的方案很難成型。領導說的沒錯,我這個方案是重復性勞動,沒必要大動干戈,但是至少我提出這個方案表明公司用戶行為分析系統對類似前端頁面監控的方案可能支持不夠,這就讓我產生了新的思考了,其實不管是用戶行為還是前端監控,技術路線是相同的,但是采集的側重點有所不同,對于公司內部的用戶行為分析系統,與公司業務耦合是有一定必要的,獲取第一手的用戶操作行為數據并且從這些數據指導頁面的改進可能比知道pvuv這樣的指標更加重要。下面我把自己寫的草案的技術部分和大家分享下,希望大家能給我拍拍磚,多提些好意見。

 

 

實現監控的可行性技術方案

 

監控方案需要從四個基本問題著手考慮,這四個問題是:

 

1. 如何收集前端頁面的數據,收集那些數據?

 

2. 收集到的數據如何發送到服務端,數據到了服務端按什么方式持久化?

 

3. 服務端處理監控數據的方式?

 

4. 監控方案是公司、部門內部的管理手段,并不是用戶享受服務的一部分,那么就有一個問題,監控方案如何能降低對頁面原有功能,頁面加載效率以及頁面穩定性的影響。

 

下文將一一論述這四個問題,詳情如下:

 

Ø 問題一:如何收集前端頁面的數據,收集那些數據?

 

收集前端頁面數據的手段就是使用javascript在需要收集數據的地方打點,綁定相應的事件,用戶觸發這個事件的時候,頁面就會自動將數據發送到服務端。該問題的重點和難點是收集那些數據,這個問題是一個業務的問題,需要業務的相關方參入進行討論,建立數據采集的業務模型。不過業務模型建立的基礎還是通過技術手段能采集到那些數據,理清這些數據之間的邏輯關系,如何能從這些有邏輯關系的數據里分析出我們需要的結果等方面進行考慮。

 

Ø 問題二:收集到的數據如何發送到服務端,數據到了服務端按什么方式持久化?

 

問題二看起來是兩個獨立的問題,但是在具體實現上這兩個問題密不可分,因為前端發送數據方式會導致服務端接收數據的方式的差異,從而導致數據持久化方案的不同。這里要總結下前端向服務端發送數據的方式:第一種就是古老的頁面同步提交,這個方式肯定不能用于監控;第二種是ajax方案,異步提交請求看起來很美其實它蘊含一個重大的隱患,因為ajax請求往往是同域下的請求,如果監控通訊模型采用ajax方案會導致支付系統請求數的增加,這樣會擠占支付系統的系統資源和系統帶寬,要是監控系統的粒度更細,那么支付系統的負擔將會以幾何倍數增加;第三種方案是一種跨域請求的方案,跨域的方案使得監控系統的服務端成為獨立的系統,監控系統要進行獨立部署,這樣的好處就是讓監控系統和支付系統在系統層級上解耦。對于前端實現跨域請求的方案有很多種,這里只講一種最簡單易行的方案就是使用img標簽的src,每次觸發監控請求的時候改變一下img標簽下的src指向的地址,當然用來完成監控請求的img所承載的圖片最好是不可見的,這種方式還有個好處就是可以充分利用瀏覽器的連接數,讓外域的圖片socket的連接和支付請求的socket的連接分開,這和網站優化里將圖片,外部文件放到獨立的靜態服務器的原理一樣,這樣做不用占用支付服務的帶寬,但是對頁面的性能有一定影響,當然影響程度是很低的,因此它是本方案提出者推薦的方式。

 

服務端持久數據的可行方式有如下三種:第一個是用日志存儲,日志存儲方式還可以分為靜態日志存儲方式,例如用apachenginx等靜態資源服務器存儲日志,靜態服務器的日志和使用imgsrc發送請求的方式配合最好,而且日志存儲方式不會牽涉程序開發,往往只需要配置下靜態資源服務器就行了,另外一種是使用動態語言存儲日志,例如使用java語言里的log4j技術存儲日志,那么這就需要用java寫一套接收程序,這種方案也可能導致img的跨域方式的性能下降,或者需要采用其他跨域的替代方案。第二個是將收集的信息寫入到文件,這個方案持久化的效果和日志存儲效果差不多,不過文件存儲實現會讓服務端開發難度增加。這里不推薦使用;第三個也是最后一個就是直接將日志存儲到數據庫,既然要存儲數據庫,那么數據到了服務端最好是預處理下,存到數據庫的好處是分析起來很便利,但是效率和性能是比較低的。

 

Ø 問題三:服務端處理監控數據的方式?

 

問題三就是一個數據挖掘的問題,在業務層面上該問題可以和我們需要采集那些數據的業務問題一起討論,而技術層面上這個就和持久化數據的方式息息相關了,目前主要是到底是處理文件還是處理數據庫的區別了。此外,我們對這些監控數據重視程度也會影響到服務端處理監控數據的系統復雜度,不過只要能采集到有用的數據,這些問題都可以慢慢解決。

 

Ø 問題四:監控方案是公司、部門內部的管理手段,并不是用戶享受服務的一部分,那么就有一個問題,監控方案如何能降低對頁面原有功能,頁面加載效率以及頁面穩定性的影響。

 

這個問題是所有問題最核心的問題,監控的目的是提升支付頁面的可用性、效率和穩定性的手段,但是這個手段的介入一定會對原支付頁面產生性能損失,因此好的監控方案一定要對原系統侵入性很低,同時自身效率很高,對頁面影響最低。該問題需要在具體實踐中進行細化,同時前面問題的討論中也要時刻考慮到這個問題所帶來的影響。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()