從“埋點技術已死?”開始說起

来源:http://www.cnblogs.com/TingyunAPM/archive/2016/03/15/5280177.html
-Advertisement-
Play Games

       大數據時代的到來意味著數據量的爆炸,也意味著收集數據的難度將大幅增加。為了將海量的數據收集起來,埋點技術應運而生。然而隨著大數據的發展和深入,用戶的要求越來越高,埋點技術開始變得力不從心。        近期,一些公司開始以“無埋點技術”為賣點,開始到處宣傳無埋點比埋點好,那麼到底事實


       大數據時代的到來意味著數據量的爆炸,也意味著收集數據的難度將大幅增加。為了將海量的數據收集起來,埋點技術應運而生。然而隨著大數據的發展和深入,用戶的要求越來越高,埋點技術開始變得力不從心。

       近期,一些公司開始以“無埋點技術”為賣點,開始到處宣傳無埋點比埋點好,那麼到底事實如何了?

埋點技術的時代

       埋點技術通過在代碼的關鍵部位植入統計代碼,追蹤用戶的點擊行為;或者植入多段代碼,追蹤用戶的連續行為;並通過建立模型等方法,得出用戶操作行為;最終作為建立產品數據系統的一個環節準確的收集數據。

那麼為什麼通過埋代碼就可以準確的收集數據呢?

          原因有三:

  • 首先,每個操作的界面都有其獨立的標示性,具有無重覆性,利用此可以統計訪問、訪客等;

  • 其次,每個界面的事件針對當前頁面都是獨立的、唯一的,相互之間具有獨立性,對此進行埋代碼後可以統計事件行為;

  • 最後,在任一界面都會有一個或者多個事件,每個事件會有不同的參數,每個事件參數都具有完整性,在埋點後通過建模可以得出準確的數據,最終目的是為未來產品優化方向做指導的。

這是筆者在以前公司時候,寫的前端代碼:

<%= link_to "全部雇員#{corp.staffers_count}", employees_corp_path(corp.pretty_abbrev, from: 'corps_detail_all_employee'), class: 'more', onclick: "addGaTrackEvent('corps_detail','goto_all_employee','corps_detail_right')" %>

       像這樣addGaTrackEvent的onclick事件幾乎遍佈整個項目,而且因為瀏覽器的相容問題,有時候還不得不採用這種簡單粗暴的方式添加“埋點”

埋點技術的弊端 

          其實,從上面的代碼就看出了這種“埋點技術”的弊端

  • 首先,IT人員在埋點的時候,必須先清楚要收集的是什麼數據,這些數據用來做什麼,在什麼地方收集這些數據,而且往往會導致代碼的醜陋。

  • 其次,一旦數據有問題,想要糾正則需要重新進行埋點,使得之前的工作變成無用功。

  • 最後,埋點增加了測試的難度,需要考慮業務其外的東西。

       所謂無埋點技術,並非完全不用埋點,而是不用在設置代碼前先行定義需要採集的事件或功能

       大多對於可互動式的應用程式,例如Android應用,iOS應用,網站,Windows Phone應用,Windows的窗體程式、Java的窗體程式等等,其實在界面渲染時都有幾點共性:

  • 圖形背後都有圖形樹,我們所看到的輸入框、文本框、按鈕等等其實都是view,而view的擺放其實也都是有對應的視圖方式,例如線性佈局、網格佈局、表格佈局、相對、絕對等等,然後view加佈局就組成了我們要看到的界面,比如最簡單的就是網站的DOM結構了,有層級關係,對於Android而言就是View視圖的層級關係了,調用系統級API基本上都能獲取這個樹結果。

  • 窗體都有生命周期,比如Android的Activity的生命周期

  • 對於我們可視的這些界面元素,當他們顯示出來、被點擊了、被選中了、被滑動等等操作的時候,系統也都會有相應的介面給開發者通知他們去處理,所以也就是對於View而言可以綁定或者委托或者是監聽他們的一些觸發事件,比如剛剛提到的載入、點擊、選中等操作。

       講到這裡,應該很清楚了,應用程式在呈現程式界面的時候,其實有一套生命周期的準則在裡面,控制了從界面元素創造到響應用戶操作到銷毀,同時也有一個圖形樹的準則在裡面,控制了這些界面元素的顯示層級和順序,最後在用戶交互(包括展現)各個界面元素的時候,會給開發者提供一系列的介面,讓開發者去處理這些行為。

       所以原理清楚了,後續無埋點其實也就能想到怎麼做了,現在市面上主流有兩種,一種是預先跟蹤所有的渲染信息,一種是滯後跟蹤的渲染信息。兩種做法不太一樣,後者要簡單一些,前者要重一些,但是也有一些辦法優化(不交互的元素肯定多於交互元素),各家也就都有自己的方法在裡面。

       無埋點技術的弊端:只看數據採集的方式,而不考慮數據的傳輸,存儲,分析,可視化反饋,都是耍流氓。

       因為你根本沒辦法定義“所有的信息”。抓取的信息越多,也就意味著浪費的流量也越多,存儲和索引的成本也越高。

       信息檢索有一個最關鍵的概念是 precision/recall。無埋點是儘可能地提高 recall,而這個成本一部分是終端客戶承受,另一部分是在 SaaS 服務的數據管線上增加壓力。對於 PC 端的應用,這可能不是問題。但是對於移動端的應用,這就意味著更多的移動數據成本和耗電,此外還有相關的隱私風險。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 轉載:http://blog.csdn.net/johnny901114/article/details/7839512 我們都知道在onCreate()裡面獲取控制項的高度是0,這是為什麼呢?我們來看一下示例: 首先我們自己寫一個控制項,這個控制項非常簡單: 佈局文件: 測試的Activity的onCr
  • 有的項目中,需要使用tableview的headerview,但是想讓headerview粘在最頂不,希望和cell一起滾動,可以試試下麵的代碼來幫你實現這個需求:
  •  一、   JSON (JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。     Json建構於兩種結構:     1、“名稱/值”對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀
  • 一.iTween 介紹 、二.iTween 原理、三.iTween 下載、四.iTween 類介紹、五.主要功能介紹   原文地址:http://blog.csdn.net/dingkun520wy/article/details/50550529   一.iTween 介紹 三.iTween 下載
  • 一、基礎介紹;二、基礎屬性 原文地址: http://blog.csdn.net/dingkun520wy/article/details/50896420   一、基礎介紹   CameraTexture:根據提供顏色創建一個full-screen Texture2D,可為CameraFade所用
  • SQL Server 2016真的讓人眼前一亮。幾天前微軟就提供了RCO(候選發佈版)版本的下載。我已經圍觀了一圈RCO版本,其中一個最拽的功能是資料庫範圍內的配置(Database Scoped Configuration),在今天的文章里我想談談它。補充幾句:裝好之後,居然發現沒有SSMS,崩潰
  • oracle基本表查詢
  • Create Type 的話呢,是創建一個自定義的數據類型,等於說為常用的數據類型建造一個別名的樣紙。然後就可以通用當前資料庫的當前架構。(當然了,一般來說我們都是使用dbo架構,所以都會無事前面那個說明)╮(╯_╰)╭。 下麵我來演示一下相關內容 最簡單的先創建一個類型TS,然後把它查出來。雖然看
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...